@embeddeble是foo.class'pk和bar.class'fk到foo.class

hivapdat  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(314)

我试图在一个我无法重新设计的数据库上定义jpa层。该层包含一个onetomany关系,其中多个部分有一个外键,外键由一个部分作为主键的相同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

du7egjpx

du7egjpx1#

我设法做到了:

@ManyToOne
  @JoinColumns({
            @JoinColumn (name = "foo_id", referencedColumnName = "foo_id"),
            @JoinColumn (name = "secondary_id", referencedColumnName = "secondary_id")
  })
  private Foo foo;

如果有人有更优雅的解决方案,我会接受的

相关问题