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 带doube嵌入键的SqlResultsMapping_Java_Hibernate - Fatal编程技术网

Java 带doube嵌入键的SqlResultsMapping

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

我有一个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(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;