【问题标题】:How to retrieve my foreign key fields value in json with jpa?如何使用 jpa 在 json 中检索我的外键字段值?
【发布时间】:2019-07-04 09:39:10
【问题描述】:

我有一个包含一些实体的数据库,当我尝试查询并获取 JSON 数组中的数据时,我只获取不是外键的字段,而外键的字段出现在链接中。 如何正常获取外键字段?

这是我的模型类:

@Table(name = "affecter")
@Data
@Entity
public class Affecter implements Serializable {
  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", insertable = false, nullable = false)
  private Integer id;

  @Column(name = "dateEntree", nullable = false)
  private Date dateEntree;

  @Column(name = "dateSortie")
  private Date dateSortie;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="idAffaire", nullable = false)
  @JsonBackReference
  private Affaire affaire;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="idService", nullable = false)
  @JsonBackReference
  private Service service;

这是我的存储库:

@CrossOrigin("*")
@RepositoryRestResource
public interface AffecterRepository extends JpaRepository<Affecter, Integer>, JpaSpecificationExecutor<Affecter>{
    //Long countById();


    @Query(value = "SELECT a FROM Affecter a WHERE a.service.id = ?1 AND a.dateSortie=null")
    @RestResource(path = "/byService")
    public List<Affecter> findAffecterByService(@Param("idS") Integer service);

}

这是链接返回的我的 JSON 数组:http://localhost:8080/affecters

id: 2,
dateEntree: "2019-06-19T00:00:00.000+0000",
dateSortie: null,
_links: {
self: {
href: "http://localhost:8080/affecters/2"
},
affecter: {
href: "http://localhost:8080/affecters/2"
},
affaire: {
href: "http://localhost:8080/affecters/2/affaire"
},
service: {
href: "http://localhost:8080/affecters/2/service"
}
}

【问题讨论】:

  • 您还必须将外键列映射为实体中的属性。

标签: json spring hibernate jpa


【解决方案1】:

您还必须将外键列映射为实体中的属性,但为只读:

@Column(name = "idAffaire", insertable = false, nullable = false)
private Integer idAffaire;

@Column(name = "idService", insertable = false, nullable = false)
private Integer idService;

【讨论】:

  • 感谢您的回答,但出现错误,ManyToOne 属性上不允许列
  • 看看我的回答。这不在 ManyToOne 参考中。这是两个附加字段
猜你喜欢
  • 2021-06-09
  • 2021-11-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2019-03-16
  • 1970-01-01
相关资源
最近更新 更多