Hibernate中多个表之间的复合ID

时间:2010-09-13 17:37:37

标签: java hibernate composite

我对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的一个实例(现在这不是问题)。< / p>

我已经阅读了一些关于使用类来指向复合id(在官方教程中),重写equals()和hashCode()的内容,但是我无法使其工作,因为我对如何编写我的hbm感到很困惑.xml文件......

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您只是简化数据模型并摆脱一些冗余,您可能会觉得自己更开心。在像这样的更复杂的数据建模问题上处理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