java可嵌入关系
有人能帮我简单解释一下如何使用@Embeddeble吗
我有这种情况
一家公司有几个员工,我的员工表有两个ID字段(register_number
和name
)
这是正确的方法吗
@Entity
@Table(name = "COMPANY")
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private Employee employeeId;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
@GenericGenerator(name = "native", strategy = "native")
@Column(name = "ID", unique = true, nullable = false, precision = 38)
private Long id;
@Column(name = "NAME", nullable = false, length = 50)
private String name;
@ToString.Exclude
@EqualsAndHashCode.Exclude
@OneToMany(fetch = FetchType.LAZY, mappedBy = "registerNumber")
private Set<Employee> employees;
}
//
@Embeddable
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "REGISTER_NUMBER", nullable = false, length = 100)
private String registerNumber;
@Column(name = "NAME", nullable = false, length = 50)
private String name;
@Column(name = "EMAIL", nullable = false, length = 50)
private String email;
}
# 1 楼答案
我认为您正在寻找一种使用hibernate支持复合密钥的方法。您应该将这些字段移动到一个新类,并用
@Embeddable
注释该类对于问题中提到的类,使用字段(
registerNumber
和name
)创建一个新的可嵌入类EmployeeIdClass
,并在Employee
中为该类的对象创建一个变量,用@embeddeddid对其进行注释EmployeeIdClass
Employee
Company
CompanyEmployeeTest
Queries ran by Hibernate