假设我有一个实体“员工”和一个实体“地址”。员工有一个与他/她相关的地址。从关系数据库的角度来看,Address 表将被视为弱实体,因为如果数据库中没有相应的 Employee,则员工地址就不可能存在。因此,假设我想建模以下内容:
表:员工
员工 ID |姓名
表地址
员工 ID |街道名称
对于 Employee 表,主键是 EmployeeID。对于Address 表,主键是EmployeeID,但它也是Employee 表的外键。您将如何使用 j2ee 在 EJB 3.0 中对此进行建模?当我创建一个名为Employee的实体类时,我可以在employeeId上方设置@id注释,以便将该属性标记为主键。但是,当我创建 Address 实体时,我想将employeeID 属性设置为主键和外键(将其与 Employee 表关联)。有这方面的注释吗?希望我已经把我的问题说清楚了。谢谢。
数据库
最佳答案
将 Address 映射为单独的实体可能不是一个好主意 - 正如您所说,它的生命周期不仅由其所有者(例如员工)控制,而且您也不希望在不同员工之间共享相同的 Address 实例.
考虑将其映射为 @Embeddable相反:
@Embeddable
public class Address {
private String streetName;
...
}
@Entity
public class Employee {
@Embedded
private Address address;
...
}
请注意,上面会将地址列映射到员工表;如果您想保留一个单独的表,您可以使用 @JoinTable 覆盖它注释。
关于java - 如何使用 EJB 3.0 制作弱实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712450/