我试图在无法重新设计的数据库上定义JPA层。该层包含一个OneToMany关系,其中Many部分具有由一部分作为主键的相同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;
尽管任何人都有更优雅的解决方案,我都会接受的