【发布时间】:2018-07-25 09:08:02
【问题描述】:
我有一个部门和员工表。我需要部门名称和部门中的员工是唯一的,以便为具有相同员工集的部门提供一个新条目,它应该会引发唯一约束违规错误。
我不确定如何在休眠中解决这个问题。
我需要跨多个表具有唯一约束。
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(
name="dept"
)
public class DeptEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false)
private String name;
@OneToMany(mappedBy = "dep", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Employee> attributes = new ArrayList<>();
}
导入 javax.persistence.*;
@Entity
@Table(name="emp"
)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
@JoinColumn(name = "dept_id", referencedColumnName = "id", nullable = false)
private DeptEntity dep;
}
【问题讨论】:
-
您可能需要为此使用数据库触发器
-
没有使用 JPA 的解决方案?感谢您的评论。
标签: postgresql hibernate spring-data