【发布时间】:2021-02-09 19:45:44
【问题描述】:
我查看了所有可能的 Google 搜索和 Stackoverflow 搜索,但找不到我要查找的内容。我的问题是有一个 A 类和一个 B 类,A 类有一个复合主键,B 类有一个原始主键。这些类(表)与一个名为 C 的类连接,我需要这个,因为连接中还有其他数据(底部的示例)。在 C 类中,我显然将 B 类和 A 类的主键作为外键,但是我需要 B 类的复合键和 A 的外键的第一个属性作为 C 类的主键。
仅用文字有点难以理解,所以这里是示例:
public class CompositeId implements Serializable {
private Long id;
private Long version;
// Other stuff...
}
@Entity
@IdClass(CompositeId.class)
public class A {
@Id
private Long id;
@Id
private Long version;
private String name;
private String creatorName;
// Other stuff...
}
@Entity
public class B {
private Long id;
private String name;
// Othet stuff...
}
public class CompositeJoinId implements Serializable {
private Long aId; // Should equal to aReference's id property.
private Long bId; // Should equal to bReference's id property.
// Other stuff...
}
@IdClass(CompositeJoinId.class)
@Entity
public class C {
@Id
@ManyToOne
@JoinColumns({
@JoinColumn(name="a_id", referencedColumnName="id"),
@JoinColumn(name="a_version", referencedColumnName="version")
})
private A aReference;
@Id
@ManyToOne
@JoinColumn(name = "b_id")
private B bReference;
private Long day;
// Other stuff...
}
有没有办法做到这一点?我所有的发现只使用一个使用两个外键的类,但我只需要/想要一个。
【问题讨论】: