我在我的项目中使用JPA 2.0,并且我在Pojo类的一个属性上使用了@ElementCollection。
以下是我的java实体类:
@Entity
@Embeddable
@Table(name = "test")
public class Test {
@Id
@GeneratedValue(generator = "seq_test")
@SequenceGenerator(name = "seq_test", sequenceName = "seq_test")
@Column(name = "id")
private Long id;
@ElementCollection(fetch = FetchType.LAZY, targetClass = String.class)
@CollectionTable(name = "denied_set")
@OrderColumn
private Set<String> deniedSet;
@ElementCollection(fetch = FetchType.LAZY, targetClass = String.class)
@CollectionTable(name = "masked_set")
@OrderColumn
private Set<String> maskedSet;
@ElementCollection(fetch = FetchType.LAZY, targetClass = String.class)
@CollectionTable(name = "user_groups")
@OrderColumn
private Set<String> userGroups;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Set<String> getDeniedSet() {
return deniedSet;
}
public void setDeniedSet(Set<String> deniedSet) {
this.deniedSet = deniedSet;
}
public Set<String> getMaskedSet() {
return maskedSet;
}
public void setMaskedSet(Set<String> maskedSet) {
this.maskedSet = maskedSet;
}
public Set<String> getUserGroups() {
return userGroups;
}
public void setUserGroups(Set<String> userGroups) {
this.userGroups = userGroups;
}
}
我正在使用Spring Data JPA Repositories与数据库进行交互。数据已正确插入数据库表中。当我从表中删除一些数据时,我可以在日志中看到删除查询也在子表上执行,然后将相同的数据重新插入表中。
任何人都可以帮我理解我是否遗漏了代码中的任何内容?
提前致谢。
答案 0 :(得分:0)
只是一些可能对您有所帮助的问题:
您需要@Embedded公共类测试吗?如果您没有使用它 另一个拥有实体然后删除它。
指定应将哪个列用作ID @ElementCollection。使用这样的东西: @CollectionTable(名称= “denied_set”, JoinColumns = @ JoinColumn(name =“COLUMN_NAME”))或者使用Embedded deniad_set是Embeddable。
否则看起来对我来说是正确的......