Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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中映射Id为的组件?_Java_Hibernate_Hibernate Mapping - Fatal编程技术网

Java 如何在Hibernate中映射Id为的组件?

Java 如何在Hibernate中映射Id为的组件?,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我正在尝试映射我公司的业务对象xml not annotation,它具有以下一般结构: ObjectDetail (main table) ObjectSummary (main table) objectId otherStuffInMainTable otherStuffInOtherTables 我知道如何用一个简单的Id映射摘要,我知道如何将摘要对象映射为细节对象的一个组件,但我不知道如何告诉细节对象它的Id在一个组件中。Hi

我正在尝试映射我公司的业务对象xml not annotation,它具有以下一般结构:

ObjectDetail        (main table)
    ObjectSummary   (main table)
        objectId
    otherStuffInMainTable
    otherStuffInOtherTables
我知道如何用一个简单的Id映射摘要,我知道如何将摘要对象映射为细节对象的一个组件,但我不知道如何告诉细节对象它的Id在一个组件中。Hib文档中有很多关于可嵌入ID的信息,但都是关于多列键的。我有一个简单的Id,但我不想使用他们建议的语法,因为Summary中的Id是表键,而不是整个Summary对象

是否有我刚刚错过的最佳实践,或者有什么好主意?

如果ObjectSummary.objectId也是ObjectDetail的id,那么它们应该映射到单个表。在这种情况下,ObjectSummary不能是实体,其生命周期独立于ObjectDetail


可以将ObjectSummary标记为可嵌入实体。ObjectDetail将具有嵌入ObjectSummary的属性。查看文档中关于的部分。

谢谢,objectId确实是这两个对象的Id。我确实需要独立访问它们,我需要查询摘要,尽管我不需要更新它们。但您实际上还没有回答我的问题:我知道组件/嵌入式对象,但Hibernate要求ObjectDetail有一个Id,Id是ObjectSummary中的一个字段。这里有一个注释EmbeddeBleid,看起来这是正确的想法,但它将整个ObjectSummary放入Id中,我只希望ObjectSummary中的一个简单整数作为键。谢谢这个问题已经不存在了,但是没有其他的答案,我可以看出这是处理单独查询摘要和详细信息的一种方法,所以我接受了。