Java 如何在不使用嵌入键的情况下在外键和JPA中的列之间创建复合主键?

Java 如何在不使用嵌入键的情况下在外键和JPA中的列之间创建复合主键?,java,jpa,spring-data-jpa,h2,Java,Jpa,Spring Data Jpa,H2,我有3个类,如下所示: public class Room implements Serializable { @Id private String ID;//pk @OneToMany private List <B> listOfClosets; } public class Closet implements Serializable { private String RoomID;//forign key And pk priv

我有3个类,如下所示:

public class Room implements Serializable {
    @Id
    private String ID;//pk
    @OneToMany
    private List <B> listOfClosets;
}
public class Closet implements Serializable {
    private String RoomID;//forign key And pk
    private String ShirtID;//pk
    @OneToMany
    private List <> listOfTshirts;
}
public Class Tshirt {
    private String ClosetID; //forign key And pk
    private String ShirtID; //forign key And pk
    private String TshirtID; //pk
}
公共教室实现可序列化{
@身份证
私有字符串ID;//pk
@独身癖
私人物品清单;
}
公共类实现了可序列化{
私有字符串RoomID;//forign key和pk
私有字符串ShirtID;//pk
@独身癖
私人名单;
}
公营T恤{
私有字符串ClosetID;//forign key和pk
私有字符串ShirtID;//forign key和pk
私有字符串TshirtID;//pk
}
我怎样才能找到一种方法 衣柜中包含RoomID和ShirtID作为复合主键, Tshirt将ClosetID、ShirtID和TshirtID作为其合成基。
我如何在不创建嵌入式ID的情况下做到这一点,因为我觉得拥有嵌入式ID会让访问其中的变量变得丑陋

我已经使用UUID创建了类似的东西,但是我认为如果没有额外的UUID,类看起来会更干净,因为我们已经可以使用现有的变量来获得唯一的键。

因为我处理的是一个永远不会增加大小的小数据集,所以性能不是问题,我宁愿保持干净

另一种方法是使用
@IdClass
注释。