Java 如何进行以下hibernate映射?
我有以下数据库模式:Java 如何进行以下hibernate映射?,java,hibernate,Java,Hibernate,我有以下数据库模式: table a { id, state } table b { id, a_id, is_valid, amount } 我希望有一个hibernate映射,只有当a.state有某个值时,我才从表b中获取值。这是我使用的hibernate映射(使用了 当我这样做时,我的xml显示了一个语法错误,指出必须遵循层次结构 我所做的是正确的,如果不是的话,如果有人能告诉我前进的方向,那就太好了。谢谢 p.S-表b中的多个条目
table a {
id,
state
}
table b {
id,
a_id,
is_valid,
amount
}
我希望有一个hibernate映射,只有当a.state有某个值时,我才从表b中获取值。这是我使用的hibernate映射(使用了
当我这样做时,我的xml显示了一个语法错误,指出必须遵循层次结构
我所做的是正确的,如果不是的话,如果有人能告诉我前进的方向,那就太好了。谢谢
p.S-表b中的多个条目将有a_id列。但是,b中只有一行设置了is_有效值,如果我在POJO中得到这一行,这就足够了。在我看来,您似乎正在使用鉴别器策略为每个子类映射一个表。这意味着表a和表b之间有1-1行的相关性,其中表b(子类)的主键也是表a中的外键 然而,您的映射有点奇怪,因为您有
<key column="a_id" />
通常这应该是
<key column="id" />
而且不会有“a_id”列
但是,您的db设计看起来像一对多关系,而不是子类关系
没有你的物体,我真的说不出你想做什么
看看hibernate文档中关于继承的内容
如果您发布完整的映射及其背后的java对象,将会有所帮助。是的,这是一种一对多关系。表b中的许多行将具有相同的a_id键。我不想使用一对多映射,因为获取一个ClassA对象会从db中获取ClassB的所有对象,我不想这样做。如果您仍然需要,我可以发布java对象。您可以发布它们,但它们元素对于您尝试执行的操作并不是真正有用的。仅当特定列设置为特定值时,才尝试获取集合。据我所知,这并不是hibernate真正能为您做的事情。我所做的是将它放在不同的hibernate映射中,因为我在一个hibernate映射中使用了太多的东西
<key column="id" />