Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何进行以下hibernate映射?_Java_Hibernate - Fatal编程技术网

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" />