Я использую JPA с Hibernate 4.x. и postgresql 9.x, но мне интересно, какая проблема.JPA с Hibernate 4.x, @ElementCollection, Primary Key
При использовании аннотации @ElementCollection, и я настроил встроенное поле типа Set, я ожидаю генерировать первичный ключ встраиваемой таблицы коллекций, но он не работает. Я могу найти только один внешний ключ против владельца отношений. Интересно, почему он не генерирует первичный ключ. Это мой тестовый код. A.java
@Entity
public class A {
@Id
private Long id;
@Column(name = "\"as\"")
private String as;
public String getAs() {
return as;
}
public void setAs(String as) {
this.as = as;
}
@ElementCollection
private Set<B> bs = new HashSet<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Set<B> getBs() {
return bs;
}
public void setBs(Set<B> bs) {
this.bs = bs;
}
}
B.java
@Embeddable
public class B {
private String col1;
private String col2;
public String getCol1() {
return col1;
}
public void setCol1(String col1) {
this.col1 = col1;
}
public String getCol2() {
return col2;
}
public void setCol2(String col2) {
this.col2 = col2;
}
}
результат
Hibernate:
create table A (
id int8 not null,
"as" varchar(255),
primary key (id)
)
Hibernate:
create table A_bs (
A_id int8 not null,
col1 varchar(255),
col2 varchar(255)
)
Hibernate:
alter table A_bs
add constraint FK_rcecll1ao3brmwwnsep3iqq3p
foreign key (A_id)
references A
Позвольте мне знать, почему он не генерирует первичный ключ? Заранее спасибо
Да, я знаю, что означает у. но я хочу использовать ElementCollection для отображения наборов простых элементов, как это сказал u. Поскольку вы видели, что класс B не является сущностью, просто добавьте встроенную аннотацию. Мне интересно, генерирует ли он составной первичный ключ (A_id, col1, col2) таблицы коллекции A_bs или нет. Я ожидал генерировать первичный ключ, но это не так. Я хочу знать, почему. Я мог бы генерировать первичный ключ при использовании ElementCollection в нескольких книгах JPA. – ohyun
Я использовал java.util.Set type для поля класса, прикрепленного аннотацией '@ ElementCollection'. Затем я ожидаю генерировать ПК, потому что они должны быть уникальными. спасибо – ohyun
В каких книгах JPA вы это видели? Вы читали это? http://en.m.wikibooks.org/wiki/Java_Persistence/ElementCollection#Primary_keys_in_CollectionTable –