泛型bi-dir一对多关系

wgeznvg7  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(313)

我想知道在JPA2.0中是否存在使用泛型的方法?
考虑以下情况:

@Entity
public class GenericPhoto<T> implements Serializable {

  @Id
  @GeneratedValue
  private long id;

  @NotNull
  private byte[] file;

  @ManyToOne(cascade = { CascadeType.DETACH })
  @JoinColumn(name = "PARENTID", nullable = false)
  @NotNull
  private T parent;

  //...
}

@Entity
public Car {

  @OneToMany(mappedBy = "parent")
  private Set<GenericPhoto<Car>> photos;

  //...
}

@Entity
public Truck {

  @OneToMany(mappedBy = "parent")
  private Set<GenericPhoto<Truck>> photos;

  //...
}

我希望代码能解释这一切。我只想为photo创建一个泛型类,我认为这样可以更容易地实现服务等。
致以最诚挚的问候

yr9zkbsy

yr9zkbsy1#

当您使用泛型时,它类似于不键入字段(即objectparent),因此您需要告诉jpa如何Map关系。为此,可以在jpa中使用targetentity。
为此,您将需要一个通用的超类to car和truck,即auto,并将@manytoone中的targetentity设置为auto(您还可以考虑将照片移动到auto)。
如果由于某种原因不能使用继承(最好使用继承)。如果你使用eclipselink,你可以使用@variableonetoone关系。

相关问题