Hibernate две таблицы и один объект - PullRequest
5 голосов
/ 07 октября 2010

У меня есть такая ситуация:

Table1: 
tab_id
field11
field12


Table2
id
tab_id
field21
field22

Мне нужно создать один объект на этих двух таблицах, например:

object: 

@Id
tabId

@Colummn(name="field11")
field11

@Colummn(name="field12")
field12

@Colummn(name="field21")
field21

Когда я обновляю field21 table2 должен обновить это поле, ноtable1 не имеет никакой информации о table2, только table2 и внешний ключ для table1

Есть идеи, как мне это сделать?

Я не могу изменить структуру таблицы, я могу только создать новый класс в Java.

Ответы [ 2 ]

3 голосов
/ 07 октября 2010

Столбец id в Table2 (я думаю, это ПК) раздражает. Но если вы можете сгенерировать его при вставке, отображение обеих таблиц с использованием @SecondaryTable должно работать:

@Entity
@Table(name="TABLE1")
@SecondaryTable(name="TABLE2", pkJoinColumns = 
    @PrimaryKeyJoinColumn(name="TAB_ID", referencedColumnName="TAB_ID")
)
public class MyEntity {
    ...
    @Id @Column(name="TAB_ID")
    private Long tabId;

    @Column(name="FIELD11")
    private int field11;

    @Column(name="FIELD12")
    private int field12;

    @Column(name="FIELD21", table="TABLE2")
    private int field21;
    ...
}

Если вы не можете, боюсь, вам придется сопоставить 2 класса (с отношением OneToOne).

Ссылки

2 голосов
/ 07 октября 2010

Можете ли вы использовать @SecondaryTable @ Проблема аннотации в SecondaryTable ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...