У меня есть две таблицы:отображение JPA/Hibernate с @SecondaryTable аннотацию
part {
int id; --> primary key, auto generated
varchar poNo;
varchar partNo;
varchar partDesc;
varchar eccNo;
...
}
supplement {
int id; --> primary key
varchar poNo; --> foreign key
varchar partNo; --> foreign key
varchar venderPartNo;
varchar exportHSCCode;
...
}
я определил одну сущность, как показано ниже:
@Entity
@Table(name="part")
@SecondaryTable(name="supplement", pkJoinColumns ={@PrimaryKeyJoinColumn="id"})
public class Part{
@Id
@GeneratedValue
private Integer id;
private String poNo;
private String partNo;
private String partDesc;
private String eccNo;
@Column(table="supplement")
private String vernderPartNo;
@Column(table="supplement")
private String exportHSCCode;
...
getter and setter...
}
Вопрос 1:
, когда я упорно одна часть, Я не хочу вставлять одну строку в таблицу дополнений, есть ли какая-либо конфигурация или аннотация, чтобы ее получить? Поскольку в соответствии с выше Сущности и конфигурации, когда я настойчив одну часть, спящий режим будет генерировать два заявления SQL вставки для меня:
insert into part(poNo, partNo, partDesc, eccNo) values (?,?,?,?)
insert into supplement(vernderPartNo, exportHSCCode, id) vaules (?,?,?)
, который я хочу есть, когда сохраняется одна часть, я не ставил значение для любого поданной дополнения, то только одна вставка: Вставить в часть (poNo, partNo, partDesc, eccNo) значения (?,?,?,?)
Возможно ли это?
Вопрос 2:
из таблицы схемы выше, Pono и PARTNO является внешним ключом, это означает, что для каждой соответствующей части и дополнения, это два поля должно быть имеет то же значение. Но я не знаю, как сопоставить это значение из двух столбцов, чтобы добавить таблицу при использовании конфигурации, как указано выше.
Что касается нормальной работы Hibernate, когда он обрабатывает одну часть, он всегда генерирует два оператора insert, о котором я упоминал выше, а для вторичной таблицы - оператор insert, который содержит только те поля, которые указали его имя таблицы, поэтому для дополнения, это вставка утверждение:
insert into supplement(vernderPartNo, exportHSCCode, id) vaules (?,?,?)
Итак, есть ли имеет какой-либо способ, чтобы Hibernate создания оператора вставки, как показано ниже:
insert into supplement(poNo, partNo, vernderPartNo, exportHSCCode, id) vaules (?,?,?,?,?)
по первому вопросу, Я ошибся в своем предыдущем тестировании, и я нашел, что использование @SecondaryTable может решить его уже, просто не устанавливайте значение для любых полей для таблицы дополнений, тогда hibernate пропустит, чтобы вставить запись в эту таблицу. – Aaron