Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一个具有复合id的对象连接到另一个具有复合id但不具有相同复合id的对象上?(JPA注释)_Java_Hibernate_Jpa_Annotations_Jpa 2.0 - Fatal编程技术网

Java 如何将一个具有复合id的对象连接到另一个具有复合id但不具有相同复合id的对象上?(JPA注释)

Java 如何将一个具有复合id的对象连接到另一个具有复合id但不具有相同复合id的对象上?(JPA注释),java,hibernate,jpa,annotations,jpa-2.0,Java,Hibernate,Jpa,Annotations,Jpa 2.0,如何仅使用Foo_ID将bar对象列表映射到Foo对象上 @Entity @Table(name="FOO") class Foo { @EmbeddedId private FooPK primaryKey; @OneToMany @JoinColumn(name="FOO_ID", referencedColumnName="FOO_ID") //does not work private List<Bar> bars; } @Embe

如何仅使用Foo_ID将bar对象列表映射到Foo对象上

@Entity
@Table(name="FOO")
class Foo {
    @EmbeddedId
    private FooPK primaryKey;

    @OneToMany
    @JoinColumn(name="FOO_ID", referencedColumnName="FOO_ID") //does not work
    private List<Bar> bars;
}

@Embeddable
class FooPK {
    @Column(name="FOO_ID")
    private String id;

    @Column(name="FOO_SUB_ID")
    private String subId;
}

@Entity
@Table(name="BAR")
class Bar {
    @EmbeddedId
    private BarPK primaryKey;

    //other attributes and methods
}

@Embeddable
class BarPK {
    @Column(name="FOO_ID")
    private String id;

    @Column(name="BAR_ID")
    private String barId;

    @Column(name="BAR_SUB_ID")
    private String barSubId;
}
@实体
@表(name=“FOO”)
福班{
@嵌入ID
私有FooPK主密钥;
@独身癖
@JoinColumn(name=“FOO\u ID”,referencedColumnName=“FOO\u ID”)//不工作
私人酒吧名单;
}
@可嵌入
FooPK类{
@列(name=“FOO\u ID”)
私有字符串id;
@列(name=“FOO\u SUB\u ID”)
私有字符串子ID;
}
@实体
@表(name=“BAR”)
分类栏{
@嵌入ID
专用BarPK主密钥;
//其他属性和方法
}
@可嵌入
BarPK类{
@列(name=“FOO\u ID”)
私有字符串id;
@列(name=“BAR\u ID”)
私人字符串barId;
@列(name=“BAR\u SUB\u ID”)
私有字符串barSubId;
}
我在另一个包含FOO_ID作为主键的表上尝试了:@JoinColumn(如上)和@JoinTable。两者都不起作用

按此处所述进行尝试:

Foo
不执行任何特殊映射:

class Foo {
    @EmbeddedId
    private FooPK primaryKey;

    @OneToMany(mappedBy="foo")
    private List<Bar> bars;
}

如果关系是多个呢?在示例中您有一个多个:)我不知道如何映射多个,但由于您无论如何(物理上)都需要一个联接表,并且如果没有任何其他解决方案进入我的ming,我也会将关系映射为一个实体,并将两者映射为多个到该联接实体。显然,这只是一种变通办法。如果有帮助,请告诉我。
class Bar {
    @EmbeddedId
    private BarPK primaryKey;

    @ManyToOne
    @MapsId("id")
    private Foo foo;
}