rip*_*234 4 java hibernate composition
我正在尝试在带有注释的休眠中使用组合。
我有:
@Entity
@Table(name = "Foo")
public class Foo {
private Bar bar;
public void setBar(Bar bar){...}
public Bar getBar() {...)
}
public class Bar {
private double x;
public void setX(double x) {...}
public double getX() {...}
}
Run Code Online (Sandbox Code Playgroud)
当我试图拯救 Foo 时,我得到了
无法确定表 Foo 中实体 org.bla.Bar 的类型,用于列:[org.hibernate.mapping.Column(bar)]
我尝试在 Bar 上添加 @Entity 注释,但这让我知道:
没有为实体 org.bla.Bar 指定标识符
您需要specifiy之间的关系Foo,并Bar(与类似@ManyToOne或者@OneToOne)。
或者,如果Bar不是实体,则用@Embeddable 标记它,并将@Embedded 添加到Foo.
@Entity
@Table(name = "Foo")
public class Foo {
@Embedded
private Bar bar;
public void setBar(Bar bar){...}
public Bar getBar() {...)
}
@Embeddable
public class Bar {
private double x;
public void setX(double x) {...}
public double getX() {...}
}
Run Code Online (Sandbox Code Playgroud)
请参阅:https ://www.baeldung.com/jpa-embedded-embeddable——该示例解释了@Embeddable 和@Embedded Composite 方式,其中Foo和Bar(Company和ContactPerson在示例中)映射在同一个表中。
参考文档的这一部分描述了该机制:
显然 hibernate 为此使用了 JPA 注释,因此Ralph 引用的解决方案是正确的
简而言之:
如果您将一个类标记Address为@Embeddable并添加一个类型Address为 classUser的属性@Embedded,将该属性标记为,那么生成的数据库表User将包含由Address.
有关代码,请参阅 Ralph 的答案。
| 归档时间: |
|
| 查看次数: |
11190 次 |
| 最近记录: |