【发布时间】:2014-03-30 18:18:09
【问题描述】:
我有一个名为 Photo 的模型类和几个其他类,它们代表不同类型的照片源。 Photo 类必须不知道它的源类,因此现在,我将关系表示为源一侧的单向 OneToOne:
@Entity
public class Photo extends Model {
...
}
@Entity public class InstagramPhoto extends PhotoSource {
@Id
public String id;
}
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class PhotoSource extends GenericModel {
@OneToOne(cascade=CascadeType.REMOVE)
public Photo photo;
}
如果我删除 InstagramPhoto 实例,其关联的 Photo 实例也会被删除。然而,相反的操作会引发异常。我无法删除照片实例。它给了我以下错误:
Referential integrity constraint violation: "FK9366567567B45F0BDBD6: PUBLIC.INSTAGRAMPHOTO FOREIGN KEY(PHOTO_ID) REFERENCES PUBLIC.PHOTOS(ID) (4)";
附:虽然,我不希望将照片与 PhotoSource 相关联,但我也尝试过,使用另一个 @OneToOne。然后,代码没有编译,说不能建立与 PhotoSource.photo 的 mappedBy 关系。
我能做什么?
【问题讨论】:
标签: hibernate jpa playframework playframework-1.x one-to-one