【发布时间】:2010-04-14 14:37:29
【问题描述】:
谁能告诉我 Hibernate 是否支持关联作为实体的 pkey?我认为这会得到支持,但我在让任何代表这一点的映射工作时遇到了很多麻烦。特别是下面的直接映射:
@Entity
public class EntityBar
{
@Id
@OneToOne(optional = false, mappedBy = "bar")
EntityFoo foo
// other stuff
}
我收到 org.hibernate.MappingException:“无法确定类型:EntityFoo,在表:ENTITY_BAR,列:[org.hibernate.mapping.Column(foo)]”
深入研究代码,似乎 ID 始终被视为值类型;即“任何通过值而不是通过引用持久化的东西。它本质上是一个 Hibernate 类型,以及零个或多个列。”我可以通过将我的 EntityFoo 声明为可序列化的值类型,但我也不认为这会导致正确的结果。
我原以为 Hibernate 会认为列的类型是整数(或者无论父 ID 的实际类型是什么),就像使用普通的一对一链接一样,但这并不当我也将其声明为 ID 时,它似乎开始起作用。通过尝试将@OneToOne 与@Id 结合起来,我是否超越了可能?如果是这样,如何合理地模拟这种关系?
【问题讨论】:
-
我不太明白。也许是一个示例映射,在这种情况下,休眠选择另一个实体会有所帮助。 “外国” ID 生成器是什么意思?
-
好的,我已经改写了我的问题以解决实际的根本问题,这可以说更容易掌握。
标签: java hibernate orm entity-relationship