Java 如何使用EJB3.0创建弱实体

Java 如何使用EJB3.0创建弱实体,java,jpa,ejb,Java,Jpa,Ejb,假设我有一个实体“Employee”和一个实体“Address”。员工有与其关联的地址。在关系数据库的意义上,地址表将被视为弱实体,因为如果数据库中没有相应的雇员,雇员地址就不可能存在。因此,假设我要对以下内容进行建模: 表格:员工 员工ID |姓名 表地址 员工ID |街道名称 对于Employee表,主键是EmployeeID。对于地址表,主键是EmployeeID,但它也是Employee表的外键。您将如何使用j2ee在EJB3.0中对此进行建模?当我创建一个名为Employee的实体类时

假设我有一个实体“Employee”和一个实体“Address”。员工有与其关联的地址。在关系数据库的意义上,地址表将被视为弱实体,因为如果数据库中没有相应的雇员,雇员地址就不可能存在。因此,假设我要对以下内容进行建模:

表格:员工

员工ID |姓名

表地址

员工ID |街道名称

对于Employee表,主键是EmployeeID。对于地址表,主键是EmployeeID,但它也是Employee表的外键。您将如何使用j2ee在EJB3.0中对此进行建模?当我创建一个名为Employee的实体类时,我可以在employeeId上面设置@id注释,以便将该属性标记为主键。但是,在创建地址实体时,我希望将employeeID属性设置为主键和外键(将其与Employee表关联)。这个有注释吗?希望我已经把问题说清楚了。谢谢


db

将地址映射为一个单独的实体可能不是一个好主意-不仅如您所说,地址的生命周期由其所有者(如员工)控制,而且您也不希望在不同的员工之间共享同一地址实例

考虑将其映射为:

注意,上面将地址列映射到Employee表;如果希望保留一个单独的表,可以使用注释覆盖该表

@Embeddable
public class Address {
  private String streetName;
  ...
}

@Entity
public class Employee {
  @Embedded
  private Address address;
  ...
}