【问题标题】:Composite ids between multiple tables in HibernateHibernate中多个表之间的复合ID
【发布时间】:2010-09-13 17:37:37
【问题描述】:

我是 Hibernate 的新手,在使用复合 ID 和外键时遇到了一些问题, 我只想完成这项工作:

=======    =======
 Table A    Table B
=======    =======
atr1 PK    atr1 FK(Table A, atr1) PK
atr2 PK    atr2 FK(Table A, atr2) PK
atr3       atr3 FK(Table C, atrN) PK
           atr4 

关系如下:A 有(知道)一个或多个 B 的实例(它们的列表),而 B 有(知道)只有一个 C 的实例(现在这不是问题)。

我已经阅读了一些关于使用类来指向复合 ID(在官方教程中)、覆盖 equals() 和 hashCode() 但我无法完成这项工作,因为我对如何编写我的 hbm 感到很困惑.xml 文件...

有什么帮助吗?谢谢!

【问题讨论】:

    标签: java hibernate composite


    【解决方案1】:

    如果您只是简化数据模型并摆脱一些冗余,您可能会发现自己更快乐。处理像这样更复杂的数据建模问题的 Hibernate 可能会在以后导致挫折,即使你确实让它工作了。也许考虑给 B 一个简单的 A_id 而不是 A 本身的属性(看看它们如何精确映射到 A 的主键上)

        ___A___
        id PK
        atr1
        atr2
        atr3
        --> composite unique(atr1, atr2)
    
        ___B___
        id PK
        a_id FK (A.id)
        c_id FK (C.id)
        atr4
        --> composite unique(a_id, c_id)
    
        ___C___
        id PK
        atrN  unique
    

    【讨论】:

    • 是的,我一直在四处打听,也有好几个人推荐了相同的...但是当我做这种事情时我内心感觉不太好...谢谢!
    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2011-11-28
    相关资源
    最近更新 更多