Java 泛型bi-dir一对多关系

Java 泛型bi-dir一对多关系,java,hibernate,jpa,eclipselink,Java,Hibernate,Jpa,Eclipselink,我想知道JPA2.0中是否存在使用泛型的方法 考虑以下情况: @Entity public class GenericPhoto<T> implements Serializable { @Id @GeneratedValue private long id; @NotNull private byte[] file; @ManyToOne(cascade = { CascadeType.DETACH }) @JoinColumn(name = "P

我想知道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;

  //...
}
@实体
公共类GenericPhoto实现了可序列化{
@身份证
@生成值
私人长id;
@NotNull
私有字节[]文件;
@manytone(cascade={CascadeType.DETACH})
@JoinColumn(name=“PARENTID”,nullable=false)
@NotNull
私人T型父母;
//...
}
@实体
公共汽车{
@OneToMany(mappedBy=“家长”)
私人套装照片;
//...
}
@实体
公共卡车{
@OneToMany(mappedBy=“家长”)
私人套装照片;
//...
}
我希望代码能解释这一切。我只是想为photo创建一个通用类,我认为这样可以更容易地实现服务等等


最好的问候

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

为此,您需要一个普通的超类来实现汽车和卡车,即AutoAt,并将目标实体设置在@ ManyToOne到Auto上(您也可以考虑将照片移动到AUTO)。


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

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

为此,您需要一个普通的超类来实现汽车和卡车,即AutoAt,并将目标实体设置在@ ManyToOne到Auto上(您也可以考虑将照片移动到AUTO)。


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

谢谢,我将选择继承=)谢谢,我将选择继承=)