![](/img/trans.png)
[英]Entity mapping for one to many with multiple foreign keys as composite primary key
[英]Hibernate many to one mapping using one column which is in primary composite keys
我现在正尝试使用休眠从mysql数据库检索数据。 但是,我遇到了org.hibernate.AnnotationException,它使我警惕我不能使用单个属性。 我的代码如下,请看一看。
@Entity
@Table(name = "master")
public class Master implements Serializable {
@EmbeddedId
private MasterPK id;
@Column
private String description;
@Column
private String username;
@Column
private String emailaddress;
....
@OneToMany(mappedBy = "master")
@LazyCollection(LazyCollectionOption.FALSE)
private List<Child> childs;
....
// Getter and setter
}
@Entity
@Table(name = "child")
public class Child implements Serializable {
....
@Column
private String code;
@Column
private String isGolden;
@Column
private Date startServiceDate;
@Column
private Date endServiceDate;
@ManyToOne
@JoinColumn(name="id_a", referencedColumnName="id_a")
private Master master;
....
// Getter and setter
}
@Embeddable
public class MasterPK implements Serializable {
@Column(name="id_a")
private String idA;
@Column(name="id_b")
private String idB;
...
//Classes generated by JPA Tools e.g. getter, setter, comparator
}
我尝试使用master.id_a和child.id_a映射主表和子表,而id_a和id_b是主表的主键。 因此,休眠引发异常,并且我无法启动我的应用程序。 但是我仍然只想通过id_a映射两个表,因为子表没有id_b。 设计是主表中的每一行都可能映射到多个子表。 我可以针对这种情况提出一些建议吗? 非常感谢!
在我看来,您“交换”了实体,也就是说,您定义的复合pk实际上似乎是典型子表的主键。 您可以发布实际表的架构吗? 这可能会有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.