Hibernate 同一实体上的OneToMany复合主键

Hibernate 同一实体上的OneToMany复合主键,hibernate,jpa,annotations,one-to-many,Hibernate,Jpa,Annotations,One To Many,我想做以下工作: @Entity @Table(name="things") public class Thing { @Id private String id; @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY) private Set<Thing> alreadyMatchedThings; //getters and setters } @实体 @表(name=“th

我想做以下工作:

@Entity
@Table(name="things")
public class Thing
{
    @Id
    private String id;

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private Set<Thing> alreadyMatchedThings;

    //getters and setters
}
@实体
@表(name=“things”)
公共类事物
{
@身份证
私有字符串id;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私人设置已匹配的内容;
//接球手和接球手
}
正如预期的那样,这将创建表things\u things,并且因为两列有时会重复相同的值,所以我真正想要的是将这两列(id和外键)视为复合主键

不出所料,对于键“alreadyMatchedThings_id”,我得到了错误重复条目“1165f4a1-c369-41ea-888c-0e3798deb04f”


我怎样才能做到这一点呢?

好吧,我想我可以简单地选择:

@Entity
@Table(name="things")
public class Thing
{
    @Id
    private String id;

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="sourcethingid")
    private Set<MatchedThing> matchedThings;

    //getters and setters
}
干得好,我

@Entity
public class MatchedThings
{
    @Id
    private String id;

    private Thing matchedThing;

    //getters and setters
}