java - 如何使用 EJB 3.0 制作弱实体

标签 java jpa ejb

假设我有一个实体“员工”和一个实体“地址”。员工有一个与他/她相关的地址。从关系数据库的角度来看,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/

相关文章:

java - 一对一和多对一实体关系之间是否存在实现差异?

java - 创建 Activity RAR 时出错 + 在 JAVA 中找不到 ResourceAdapterImpl 类

两个耦合类中的 Java EE EJB 注入(inject)

java - 保留与使用 @idclass 的实体列表关联的实体

java - JLabel.setBackground(Color 颜色) 不起作用?

java - JPA 2 : mapping a map where the key is an entity, 值为 boolean 值

java - Java类型不匹配?

java - 在 Spring MVC + Hibernate 中自动生成唯一的随机字符串

java - 单击按钮时生成随机整数,无需刷新 Activity

java - 使用发布请求在 Google 日历中创建新事件