@ Embeddable是Foo.class的PK和Bar.class的FK到Foo.class

问题描述 投票:0回答:1

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

java hibernate spring-data-jpa hibernate-mapping jpa-2.2
1个回答
0
投票

我通过以下方式做到了:

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

尽管任何人都有更优雅的解决方案,我都会接受的

© www.soinside.com 2019 - 2024. All rights reserved.