Java Hibernate:不直接引用关联对象的一对一关联
我现在有这样的东西:Java Hibernate:不直接引用关联对象的一对一关联,java,hibernate,one-to-one,Java,Hibernate,One To One,我现在有这样的东西: public class Particle extends Entity { private Image image; ... @OneToOne(targetEntity = Image.class, cascade = CascadeType.ALL) @JoinColumn(name = "imageId") public Image getImage() { return image; } } 这很好,但由于另一个处
public class Particle extends Entity
{
private Image image;
...
@OneToOne(targetEntity = Image.class, cascade = CascadeType.ALL)
@JoinColumn(name = "imageId")
public Image getImage() {
return image;
}
}
这很好,但由于另一个处理,我需要相同的,而不引用对象。
所以我需要的实际上是:
public class Particle extends Entity
{
private int imageId;
...
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "imageId")
public int getImage() {
return imageId;
}
}
显然我得到了一个例外,它说粒子类引用了一个未知的实体。
有没有一种方法,只将id作为FK提供给image,而不是直接设置对象?
在数据库表中,imageId已经是一个整数列 您可以使用
@SecondaryTable
()
它看起来像这样
@Entity
@Table(name = "particle")
@SecondaryTable(name = "image", pkJoinColumns=@PrimaryKeyJoinColumn(name="id", referencedColumnName="imageId"))
public class Particle extends Entity {
...
@Column(table="image", name="imageId")
public int getImageId() {
return imageId;
}
}
非常感谢。我试过了,但没有达到我的预期。这为图像对象添加了一个新的约束,因为hibernate找不到粒子。但也许我的问题还不够清楚,不能说清楚。我希望能够在不提供粒子对象的情况下插入图像。但如果我插入一个粒子对象,必须有一个图像来引用它。所以我认为一对一的映射不适合这种情况。我怎样才能做到这一点。粒子对象中的图像对象应该只定义为一个整数,正如前面提到的那样。