0

我正在尝试在无法重新设计的数据库上定义 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

4

1 回答 1

0

我设法通过以下方式做到了:

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

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

于 2020-02-13T22:28:58.270 回答