我正在尝试在无法重新设计的数据库上定义 JPA 层。 该层包含一对多关系,其中“多”部分具有一个外键,该外键由与“一个”部分作为主键相同的 2 个字段组成。
@Embeddable
public class FooKey implements Serializable {
@Column(name="foo_id")
private String id;
private String secondaryId;
}
public class Foo {
@EmbeddedId
private FooKey id;
(...)
}
public class Bar {
@Id
private Long id;
(...)
//@Embedded FooKey fooKey;
@ManyToOne
private Foo foo;
}
我该如何解决这个问题?我收到错误 @Column(s) not allowed on a @ManyToOne property
最佳答案
我设法通过以下方式做到这一点:
@ManyToOne
@JoinColumns({
@JoinColumn (name = "foo_id", referencedColumnName = "foo_id"),
@JoinColumn (name = "secondary_id", referencedColumnName = "secondary_id")
})
private Foo foo;
尽管如果有人有更优雅的解决方案,我会接受
关于java - @Embeddable 是 Foo.class 的 PK 和 Bar.class 的 FK 到 Foo.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60214407/