gpt4 book ai didi

java - JPA HIBERNATE - 将列映射两次(embeddedID 和 POJO)

转载 作者:行者123 更新时间:2023-11-30 07:10:51 28 4
gpt4 key购买 nike

我必须映射一个设计糟糕的数据库。在“cote”类中,有一个带有 FK 字段的组合 PK。所以我做了一个可嵌入的以避免使用带有 IdClass 的派生实体。所以我尝试了这个:

@Entity
@Table(name="EVA_COTE")
public class Cote implements Serializable{

/**
*
*/
private static final long serialVersionUID = -3902534586060936635L;

@EmbeddedId
private CotePK cotePK;

@ManyToOne
@JoinColumn(name="Evaluation", referencedColumnName = "NUDOSS")
private Evaluation evaluation;

@ManyToOne
@JoinColumn(name="CRITERE", referencedColumnName = "CODE")
private Critere critere;

@ManyToOne
@JoinColumn(name="SEUIL", referencedColumnName = "CODE")
private Seuil seuil;

@Column(name="VALEUR", columnDefinition="Decimal(5,0)")
private Integer valeur;

@Column(name="OBSERVATIONS", length=500)
private String observations;

使用以下EmbeddedId:

@Embeddable
public class CotePK implements Serializable{

/**
*
*/
private static final long serialVersionUID = 6835265195560184935L;
@Column(name="Evaluation", nullable=false)
private Integer evaluationId;

@Column(name="CRITERE", nullable =false)
private String critereId;

@Column(name="SEUIL", nullable=false)
private String seuilId;

正如您所看到的,我在embeddedId 中使用了列评估critere 和seuil 一次,在Cote 类中使用了一次。当然,它不起作用,我不知道该尝试什么了。有没有办法强制 JPA 链接这两个字段?

最佳答案

我的最终解决方案: @实体 @表(名称=“EVA_COTE”) 公共(public)类 Cote 实现可序列化{

/**
*
*/
private static final long serialVersionUID = -3902534586060936635L;

@EmbeddedId
private CotePK cotePK;

@ManyToOne
@MapsId("evaluationId")
@JoinColumn(name="EVALUATION", referencedColumnName = "NUDOSS")
private Evaluation evaluation;

@ManyToOne
@MapsId("critereId")
@JoinColumn(name="CRITERE", referencedColumnName = "CODE")
private Critere critere;

@ManyToOne
@MapsId("seuilId")
@JoinColumn(name="SEUIL", referencedColumnName = "CODE")
private Seuil seuil;

关于java - JPA HIBERNATE - 将列映射两次(embeddedID 和 POJO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268427/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com