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_Collections_Map - Fatal编程技术网

Java 在hibernate中将映射映射到与其类相同的表

Java 在hibernate中将映射映射到与其类相同的表,java,hibernate,collections,map,Java,Hibernate,Collections,Map,我有一个非常简单(我认为)的类,我想映射: <class name="parent" table="PARENT_TABLE"> <composite-id> <key-property name = "a" column = "A"/> <key-property name = "b" column = "B"/> <key-property name = "c" column = "

我有一个非常简单(我认为)的类,我想映射:

<class name="parent" table="PARENT_TABLE">
    <composite-id>
        <key-property name = "a" column = "A"/>
        <key-property name = "b" column = "B"/>
        <key-property name = "c" column = "C"/>
    </composite-id>
    <map name = "theMap" table = "PARENT_TABLE" where="type='access'">
        <key foreign-key = "PARENT_TABLE_FK">
            <column name = "A"/>
            <column name = "B"/>
            <column name = "C"/>
        </key>
        <map-key column = "X" type = "double"/>
        <element column = "Y" type = "double" not-null="true"/>
    </map>
</class>

我从中获得了
where=“type='access'”
技巧,但问题是在映射中,外键(A,B,C,X)没有与父表(A,B,C)对齐


有人知道怎样才能让这个快乐吗?如果我必须单独映射映射,那么父表将是完全冗余的。

它不漂亮,而且会使Schemaexport变得无用,但要使其工作,您需要指定一个where条件以使父表唯一,将insert/update设置为false,并让映射间接地持久化父表

<class name="parent" table="PARENT_TABLE" where="x = (SELECT x FROM PARENT_TABLE p WHERE p.(a,b,c) = a,b,c LIMIT 1)" insert="false" update="false">

排队不是什么意思?此外,A、B、C是否不是唯一的,而是每个X、Y组合的重复项?如中所示,它希望父项的键与子项的键匹配,而子项的键不能匹配,因为它是一个映射,并且具有附加的键列“X”。对于每个子行,ABC都是重复的,这是正确的。我试图做的是防止ABC列有两个数据相同的表。