Sam*_*Sam 7 hibernate seam jpa
我们想在Seam EntityQuery接口和JPA模型中订购2列.我们如何做到这一点?
@Entity
public class A{
@OrderBy(???) // should this be hardcoded here, is it database agnostic
List<B> bobjects;
}
@Entity
public class B {
public short startTimeHrs;
public short startTimeMins;
}
@Name("bList")
public class B extends EntityQuery {
setOrderColumn("startTimeHrs, startTimeMins"); // Is this correct?
setOrderDirection("asc");
}
Run Code Online (Sandbox Code Playgroud)
She*_*ari 13
是的,您可以@OrderBy用来订购您的查询.
@OrderBy("startTimeHrs, startTimeMins")
@OneToMany(...)
getBobjects() {
return bobjects;
}
Run Code Online (Sandbox Code Playgroud)
现在每当你说A.getBobjects()他们将被订购.但是,如果您使用EntityQuery方法检索结果,则可以覆盖getEjbql()并按顺序放置顺序.
@Name("bList")
public class B extends EntityQuery {
@Override
public String getEjbql() {
return "select b from B b order by startTimeHrs, startTimeMins";
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以@Override在getResultList()那里操纵集合在你entityLists
Pas*_*ent 11
如果您正在讨论javax.persistence.OrderBy,此注释将参数列入逗号分隔属性(目标实体)的列表,并相应地对集合进行排序.例如,在你的情况下,startTimeHrs asc, startTimeMins asc.
从JPA 1.0规范:
9.1.28 OrderBy注释
的
OrderBy注释指定时的关联被检索的集合值关联的在该点的元素的顺序.Run Code Online (Sandbox Code Playgroud)@Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OrderBy { String value() default ""; }值排序元素的语法是orderby_list,如下所示:
Run Code Online (Sandbox Code Playgroud)orderby_list::= orderby_item [,orderby_item]* orderby_item::= property_or_field_name [ASC | DESC]如果
ASC或未DESC指定,ASC则假定(升序).如果未指定排序元素,则假定按关联实体的主键排序.
属性或字段名称必须与关联类的持久属性或字段的名称相对应.排序中使用的属性或字段必须对应于支持比较运算符的列.
| 归档时间: |
|
| 查看次数: |
17235 次 |
| 最近记录: |