Java 带doube嵌入键的SqlResultsMapping
我有一个a类和B类的数据模型,它们都有多个主键。我尝试将A中的所有元素都放在ResultsMapping中,以便在查询中使用,但我认为,因为A有一个键,即实体(B),所以我得到了一个异常Java 带doube嵌入键的SqlResultsMapping,java,hibernate,Java,Hibernate,我有一个a类和B类的数据模型,它们都有多个主键。我尝试将A中的所有元素都放在ResultsMapping中,以便在查询中使用,但我认为,因为A有一个键,即实体(B),所以我得到了一个异常 class A { @Id String id; @Id String version; @Id B b; } class B{ @Id String id; @Id String type; } @SqlResultSetMapping
class A {
@Id
String id;
@Id
String version;
@Id
B b;
}
class B{
@Id
String id;
@Id
String type;
}
@SqlResultSetMapping(name = "Mapping", entities = {
@EntityResult(entityClass = A.class, fields = {
@FieldResult(name = "id", column = "a_id"),
@FieldResult(name = "version", column = "a_version"),
@FieldResult(name = "b.id", column = "a_b_id"),
@FieldResult(name = "b.type", column = "a_b_type")
}
我认为,由于B是一个单独的实体,我在查询中遇到了一个错误:
java.lang.ArrayIndexOutOfBoundsException:在
java.lang.System.arraycopy(本机方法)~[na:1.8.0131]at
org.hibernate.internal.util.collections.ArrayHelper.slice(ArrayHelper.java:131)
~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
首先,在A和B上没有定义@IdClass。例如,它们用于EntityManager.find() 其次,您必须添加@ManyToOne注释才能使其正常工作
@Id
@ManyToOne
B b;
首先,在A和B上没有定义@IdClass。例如,它们用于EntityManager.find() 其次,您必须添加@ManyToOne注释才能使其正常工作
@Id
@ManyToOne
B b;