[英]How to do One to One association in hibernate with foreign key and join table and unidirectional
我希望以单向方式与联接表建立一对一关联。 --
桌子:
C(C_id,C_Data)
Class A { . . @OneToOne(cascade = CascadeType.ALL) @JoinTable(name = "B", joinColumns = @JoinColumn(name = "A_id", referencedColumnName = "A_id"), inverseJoinColumns = @JoinColumn(name = "C_id", referencedColumnName = "C_id")) private C c; }
我在jpa 2.0中使用了休眠模式。 实体D在模型中不重要,因此被忽略。 我只希望读取数据,因此不必担心插入/更新/删除用例,但是在这种情况下也可以建议最佳实践。
此设置无效。 有人可以提出正确的建议吗?
它给出以下异常
org.hibernate.MappingException: Unable to find column with logical name: A_id in org.hibernate.mapping.Table(A) and its related supertables and secondary tables
为了得到您想要的模式:
// Given the following C entity
@Entity
public class C {
@Id
@Column(name = "C_ID")
private long id;
private String C_Data;
//...
}
// A Entity should be
@Entity
public class A {
@Id
@Column(name = "A_ID")
private long id;
private String A_Data;
@OneToOne(cascade = CascadeType.ALL )
@JoinTable(name = "B", joinColumns = @JoinColumn(name = "A_id"), inverseJoinColumns = @JoinColumn(name = "C_id", unique = true))
private C c;
//...
}
我省略了referencedColumnName
,因此hibernate会将其映射到实体主键。
另请注意, B
表的A_id
列将为主键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.