在Set <string>

时间:2017-04-19 12:31:46

标签: java hibernate spring-data-jpa jpa-2.0

我在我的项目中使用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与数据库进行交互。数据已正确插入数据库表中。当我从表中删除一些数据时,我可以在日志中看到删除查询也在子表上执行,然后将相同的数据重新插入表中。

任何人都可以帮我理解我是否遗漏了代码中的任何内容?

提前致谢。

1 个答案:

答案 0 :(得分:0)

只是一些可能对您有所帮助的问题:

  1. 您需要@Embedded公共类测试吗?如果您没有使用它 另一个拥有实体然后删除它。

  2. 指定应将哪个列用作ID @ElementCollection。使用这样的东西: @CollectionTable(名称= “denied_set”, JoinColumns = @ JoinColumn(name =“COLUMN_NAME”))或者使用Embedded deniad_set是Embeddable。

  3. 在ElementCollection上默认提取类型是懒惰的,你真的需要targetClass吗?
  4. 否则看起来对我来说是正确的......