我现在正在尝试使用hibernate从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是主表的主键。因此,hibernate引发了异常,我无法启动我的应用程序。但是我仍然想要通过id_a映射两个表,因为子表没有id_b。并且设计是主表中的每一行可以映射到多个子表。我可以就这种情况提出一些建议吗?非常感谢!
答案 0 :(得分:0)
在我看来,你“交换”了实体,即你定义的复合pk似乎实际上是典型子表的主键。 你可以发布实际表的架构吗?这可能会有所帮助