Hibernate:一对一关联,无需直接引用关联对象

时间:2014-12-03 12:53:34

标签: 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 int imageId;
   ...

   @OneToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "imageId")
   public int getImage() {
     return imageId;
   }
}     

显然我得到一个例外,它说Particle类引用了一个未知实体。 有没有办法,只是提供一个id为FK的图像,而不是直接设置对象? 在数据库表中,imageId已经是整数列。

1 个答案:

答案 0 :(得分:0)

您可以使用@SecondaryTabledocumentation

来完成此操作

它看起来像这样

@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;
   }
}