2010-09-13 2 views
2

Я довольно новые с Hibernate, и я столкнулся некоторые проблемы при работе с составными идентификаторами и ключами ЗАРУБЕЖНЫХ, я просто хочу, чтобы сделать эту работу:Композитные идентификаторы между несколькими таблицами в Hibernate

======= ======= 
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 (к настоящему времени это не проблема).

Я прочитал что-то об использовании классов для точечных композитных идентификаторов (в официальном учебнике), переопределяя equals() и hashCode(), но я не могу сделать эту работу, потому что я довольно смущен тем, как писать свои hbm.xml ...

Любая помощь? Благодаря!

ответ

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 
+0

Да, я просил вокруг, и несколько человек рекомендовали то же самое. Но я не чувствую себя хорошо, когда делаю такие вещи ... спасибо! –