In JPA's CollectionTable example
@Entity
public class Person {
@Id protected long id;
@ElementCollection
@Column(name="name")
protected Set<String> nickNames = new HashSet();
}
它创建一个具有以下值的连接表Person_nickNames
:
编辑/删除值很难。我们不能使用像phpmyadmin这样的工具来点击行并编辑值,因为没有PK。
JPA是否可以在连接表中生成代理主键?
环境:带有Hibernate 4.3实现的JPA 2
答案 0 :(得分:0)
您好Smallufo
在 qplot(car.names[1:3],mtcars$wt[1:3],geom="bar",stat="identity") +
geom_text(aes(y=mtcars$wt[1:3]),label=paste(mtcars$wt[1:3]),size=10,hjust=0.54,vjust=1.5,color="white") +
science_theme +
scale_y_discrete(expand=c(-0.5,0))
@GeneratedValue(strategy = GenerationType.AUTO)
这将成为代理主键。
答案 1 :(得分:0)
我认为这应该是可能的。在PERSON_NICKNAMES表中添加了ID列作为IDENTITY,并使用下面的Person映射类,我可以在Person_nicknames表中生成唯一ID。
@Entity
@Table(name="Person")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String name;
@ElementCollection
@CollectionTable(name="Person_Nicknames", joinColumns=@JoinColumn(name="person_id"))
@Column(name="name")
private Set<String> nickNames;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getNickNames() {
return nickNames;
}
public void setNickNames(Set<String> nickNames) {
this.nickNames = nickNames;
}
}
当我保存人和昵称记录时,我在person_nicknames表中看到以下内容。
> ij> select * from Person_nicknames;
ID |PERSON_ID |NAME
1 |6 |nName0
2 |6 |nName1
3 |7 |nName0
4 |7 |nName1