首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带双倍嵌入密钥的SqlResultSetMapping

带双倍嵌入密钥的SqlResultSetMapping
EN

Stack Overflow用户
提问于 2017-11-26 19:10:35
回答 1查看 511关注 0票数 1

我有一个A类和B类的数据模型,它们都有多个主键。我试图将来自A的所有元素放在一个ResultSetMapping中,以便在查询中使用,但是我认为因为A有一个键,即实体(B),所以我会得到一个异常。

代码语言:javascript
复制
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是一个独立的实体,所以在查询中出现了一个错误:

org.hibernate.internal.util.collections.ArrayHelper.slice(ArrayHelper.java:131) ~hibernate的java.lang.ArrayIndexOutOfBoundsException: java.lang.System.arraycopy(原生方法) ~na:1.8.0_131 : null -5.0.12.final.jar:5.0.12.final

EN

回答 1

Stack Overflow用户

发布于 2017-11-27 09:46:42

首先,A和B上没有定义@IdClass。例如,它们用于EntityManager.find()。

第二,您必须添加@ManyToOne注释才能正常工作。

代码语言:javascript
复制
@Id
@ManyToOne
B b;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47499965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档