代码之家  ›  专栏  ›  技术社区  ›  Whimusical

@可嵌入的是Foo。班上的PK和酒吧。从FK到Foo。班

  •  0
  • Whimusical  · 技术社区  · 6 年前

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

    0 回复  |  直到 6 年前
        1
  •  0
  •   Whimusical    6 年前

    我设法做到了这一点,方法是:

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

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

    推荐文章