Как определить SecondaryTable, когда это не отношение «один к одному» с первичной таблицей - PullRequest
1 голос
/ 18 ноября 2011

В проекте мы должны сопоставить одну сущность двум таблицам.Таблица part_info хранит информацию о товаре, таблица part_label хранит метку, которая будет отображаться на экране.

Table part_info
id part_no part_description

Table part_label
id part_no_label part_description_label

, затем в нашем Entity

@Entity
@Table(name="part_info")
@SecondaryTable(name="part_label",pkJoinColumns=    {@PrimaryKeyJoinColumn(name="id",referencedColumnName="id")})
public class PartInfo implements Serializable {
    @id
    private int id;
@Column(name = "part_no")
private String partNo;
@Column(name = "part_description")
private String partDesc;
@Column(table="part_label",name="part_no_label")
private String partNoLabel;
@Column(table="part_label",name="part_description_label")
private String partDescLabel;
    ....
}

, но это будет отображать только одну запись part_infoк одной записи part_label.

В нашем случае в другой информации о детали может использоваться одна и та же метка детали.Например, мы будем использовать метку, полученную из part_label, как показано ниже:

Part# 
Part Desc

, но мы получили много информации о детали из таблицы part_info

PA123 AAA
PA123 DDD
PA234 BBB
PA345 CCC

Затем в пользовательском интерфейсе мы отобразим как:

Part#:PA123  Part Desc:AAA
Part#:PA123  Part Desc:DDD

Если использовать выше @SecondaryTabel, каждая part_info и каждая part_label являются отношениями «один-к-одному», если нужно извлечь две записи деталей PA123, также необходимо дважды извлечь одну и ту же метку.

IsЕсть ли способ, которым одна метка детали может быть сопоставлена ​​со многими деталями детали?

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Вы неправильно понимаете SecondaryTable, поскольку он используется только для ситуаций один к одному, и если объект удаляется, то строка из обеих таблиц удаляется. Нет повторного использования записей во вторичной таблице ... так как вторичная таблица имеет FK для первичной таблицы !!!

Если вы хотите повторно использовать некоторые данные, сделайте это отдельным объектом.

1 голос
/ 18 ноября 2011

Я думаю, что наиболее логичным решением было бы моделирование PartLabel как отдельной сущности и создание отношения ManyToOne в PartInfo к PartLabel.

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