我想知道在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创建一个泛型类,我认为这样可以更容易地实现服务等。
致以最诚挚的问候
1条答案
按热度按时间yr9zkbsy1#
当您使用泛型时,它类似于不键入字段(即objectparent),因此您需要告诉jpa如何Map关系。为此,可以在jpa中使用targetentity。
为此,您将需要一个通用的超类to car和truck,即auto,并将@manytoone中的targetentity设置为auto(您还可以考虑将照片移动到auto)。
如果由于某种原因不能使用继承(最好使用继承)。如果你使用eclipselink,你可以使用@variableonetoone关系。