Hibernate:在非主键上连接连接表(但这是一部分的一部分)

时间:2012-12-27 01:14:13

标签: java hibernate hibernate-mapping

我正在尝试映射具有一些相当有趣的连接方案的遗留数据库。我特意尝试将连接表连接到非主键。现在,我收到一条错误,指出引用未映射到单个属性

数据库

首先是数据库,这个问题已经大大简化了。有三个感兴趣的表格: Database relationship diagram

用户表包含主要数据,并包含一列“ReferenceId”。 位置表的类似之处在于它也有一个'ReferenceId',表示我想在一天结束时嵌入到用户中的数据。这个表值得注意,因为它a)有一个复合键和b)我试图加入的列是这个键的一部分。最后, UserLocation 是将它们绑定在一起的表,具有referenceIds到ReferenceIds的映射。

现在将它们映射到一起。我有我的课程:

用户

@Entity
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = 3709178675764332063L;

    @Id
    private Long id;

    @Column(name = "uname")
    private Long name;

    @OneToOne(targetEntity = Location.class, fetch = FetchType.LAZY)
    @JoinTable(name = "CandidateLocation", joinColumns = { @JoinColumn(name = "UserReference") }, inverseJoinColumns = { @JoinColumn(name = "LocationReference", referencedColumnName="ReferenceId") })
    private Location location;

}

和位置:

@Entity
@Table(name = "Locations")
@IdClass(LocationPK.class)
public class Location implements Serializable {
    private static final long serialVersionUID = -582319915736694876L;

    @Id
    @Column(name = "referenceId")
    private Long referenceId;

    @Id
    @Column(name = "IDParam1")
    private Long IDParam1;

    @Column(name = "loc_name")
    private String name;


    // ETC... 
}

问题

我得到的问题是该关联不起作用。相反,我得到一个看起来像的例外:

  

org.hibernate.AnnotationException:referencedColumnNames(ReferenceId)   引用com.foo.Location的com.foo.User.location未映射到a   单一财产。

我不能省略referenceColumnName或者它会默认为PK,但除此之外,我有点不知所措。希望我错过了其他人明显的东西。任何帮助将不胜感激。

0 个答案:

没有答案