【问题标题】:How to access element zero in HQL?如何访问 HQL 中的零元素?
【发布时间】:2017-05-20 10:33:38
【问题描述】:

我有实体和 NamedQuery:

@Entity
@Table(name="MY_TABLE")
@NamedQueries({
  @NamedQuery(name="myQuery", query="select m from MyEntity m where m.child.x = 7"
})
public class MyClass {

    @Column(name="CHILD_COL")
    private Child child;
    // getter and setter

}

public class Child {
 int x;
 // getter and setter
}

现在,我想将其更改为有一个子列表:

@Entity
@Table(name="MY_TABLE")
@NamedQueries({
  @NamedQuery(name="myQuery", query="select m from MyEntity m where m.childs[0].x = 7"
})
public class MyClass {

    @Column(name="CHILD_COL")
    private List<Child> childs;
    // getter and setter

}

但是 'childs[0].x' 语法不存在。知道我该怎么做吗?

【问题讨论】:

    标签: hql


    【解决方案1】:

    Hibernate 支持索引列表,但定义很重要。

    在旧方式(XML 映射)中,您可以按以下方式工作:

    在 pojo 中:

    private List<Child> childs;
    

    在 XML 映射中:

    <list name="childs" table="yourtable" cascade="all,delete-orphan"  
        inverse="false" lazy="false">
         <key column="fk_to_parent"/>
         <list-index column="an_integer_column"/>
          <one-to-many class="Child" />
    </list>
    

    在JPA注解中你必须使用IndexColumn注解如下:

    @IndexColumn(name="an_integer_column", base=0, nullable=false)
    

    所以你会有:

    @Column(name="CHILD_COL")
    @IndexColumn(name="an_integer_column", base=0, nullable=false)
    private List<Child> childs;
    

    告诉我是否可以

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2020-09-11
      相关资源
      最近更新 更多