Hibernate:在HQL查询中使用embeddable时的异常

时间:2012-11-12 21:45:30

标签: hibernate jpa hql embeddable

我有一个与客户的购物应用程序。那些客户有一个包含产品的购物车。这是我使用的嵌入式(简化)映射:

@Entity
class Customer {

  @Embedded
  private Cart cart;

  // Constructors, setters, equals... omitted
}

@Embeddable
class Cart {

  @ElementCollection
  @JoinTable(name = ...)
  private Set<Product> products = new HashSet<>();

  ...   
}

@Embeddable
class Product {

  private String name;

  ...
}

现在,我正在尝试使用HQL获取客户购物车。我知道我不能直接查询embeddables,但没有什么能阻止我选择它作为一个字段:

select c.cart from Customer c where c.id = 1

但这导致以下异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at org.hibernate.hql.ast.util.ColumnHelper.generateScalarColumns(ColumnHelper.java:62)
    at org.hibernate.hql.ast.tree.DotNode.setScalarColumnText(DotNode.java:661)
    at org.hibernate.hql.ast.tree.SelectClause.renderScalarSelects(SelectClause.java:359)
...

我可以通过检索客户并遍历其getCart()方法来解决这个问题,但我想知道这个问题是否是由不正确的映射或类似的问题引起的。非常感谢!

0 个答案:

没有答案