1

我想知道在 JPA 2.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;

  //...
}

我希望代码能解释一切。我只是想为照片创建一个通用类,我认为这可以更容易地实现服务等。

此致

4

1 回答 1

1

当您使用泛型时,它类似于不键入字段(即 Object parent),因此您需要告诉 JPA 如何映射关系。为此,您可以在 JPA 中使用 targetEntity。

为此,您需要一个通用的 Car 和 Truck 超类,即 Auto,并将 @ManyToOne 中的 targetEntity 设置为 Auto(您也可以考虑将照片移动到 Auto)。

如果由于某种原因不能使用继承,(最好使用继承)。然后,如果您使用 EclipseLink,则可以使用 @VariableOneToOne 关系。

于 2013-06-06T13:35:34.983 回答