Jpa继承——在其他几个实体中重用一个实体



我是jpa的新手,想知道我是如何实现这一点的。我想在其他几个实体中使用一个名为Address的实体。

汽车实体:

@Entity
public class Car 
    @Id
    private String id;
    private  String licensePlate;
    @ManyToOne
    private Address address;
    public Car() {
    }
    /* Getter and setters */
    ....
    ..

人的实体:

@Entity
public class Person {
    @Id
    private String id;
    private String name;
    @OneToMany(mappedBy = "address", cascade = CascadeType.ALL)
    private Set<Address> addresses;
    public Person() {
    }
    /* Getter and setters */
    ....
    ..

解决实体:

@Entity
public class Address {
    @Id
    private String id
    private String streetAndNumber;
    /* Now what?????? */
    private Car car; // would fit for car
    private Person person; // would fit for person
    // But what would be fitted both?

我上网寻找解决办法。但是,最有可能的原因是我缺乏知识。我找不到什么可以理解的。

实际上没有必要使所有关系都是双向的,在模型中尽可能选择单向关系是最佳实践,请参阅快速领域驱动设计。

在这种情况下,Address不需要知道它所关联的所有实体。还可以考虑使用@Embeddable注释使地址成为一个值对象(参见DDD)。

最新更新