在hibernate-jpa-api-2.0下,我可以使用带有oneToOne关系的@PrimaryKeyJoinColumn来指定外键的名称吗?
我尝试了以下但似乎没有用。
@OneToOne(optional = false, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn(name = "CARID")
@ForeignKey(name = "FK_CAR_CORP")
public CarEntity getCar() {
return car;
}
答案 0 :(得分:0)
mappedBy属性仅对双向关系是必需的,注释上可以省略此元素。它在源实体上用于指向定义关系的目标实体上的字段(包含@JoinColumn)。
@JoinColumn注释应放在billSimpleEntry字段上,以定义应该用于连接两个表的列。对于OneToOne,以下情况适用:
如果连接是使用外键映射策略进行OneToOne或ManyToOne映射,则外键列位于源实体的表中或可嵌入。 这是一个代码示例:
@OneToOne(cascade=CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name="id") // use actual column name
private ClassName className; // use class name
答案 1 :(得分:0)
答案 2 :(得分:0)
可以使用两个@ForeignKey
注释:
org.hibernate.annotations.ForeignKey (Hibernate annotation)
javax.persistence.ForeignKey (JPA annotation)
Hibernate 4(即使是最后一个版本)有时也无法处理,可能是bug javax.persistence.ForeignKey
注释的原因。
例如,对于Hibernate 4.3.11,我们应该在单向关联的org.hibernate.annotations.ForeignKey
部分使用@OneToMany
。我们可以在双向关联的javax.persistence.ForeignKey
部分使用@ManyToOne
。
因此,您可以尝试使用Hibernate org.hibernate.annotations.ForeignKey
注释。