我想知道在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;
//...
}
我希望代码解释一切。我只是想为照片制作一个通用类,我认为这样可以更容易地实现服务等。
祝你好运
答案 0 :(得分:1)
当您使用泛型时,它类似于不键入字段(即Object父级),因此您需要告诉JPA如何映射关系。为此,您可以在JPA中使用targetEntity。
为了实现这一目标,你需要一个普通的超级轿车,即Car和Truck,即Auto,并将@ManyToOne中的targetEntity设置为Auto(你也可以考虑将照片移动到Auto)。
如果由于某种原因无法使用继承,(最好使用继承)。然后,如果您使用EclipseLink,则可以使用@VariableOneToOne关系。