Java 如何将一个具有复合id的对象连接到另一个具有复合id但不具有相同复合id的对象上?(JPA注释)
如何仅使用Foo_ID将bar对象列表映射到Foo对象上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
@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;
}