我的项目最初是由seam-gen和动作“List”bean生成的,OfficeViewList看起来非常像第一次生成时那样。
bean扩展了EntityQuery。
现在我想订购结果。这样做的最佳方式是什么?
我是否想在EJBQL中添加某种“order by”类?或者我想通过
设置选择顺序以下是seam-gen生成的代码(我已更改了RESTRICTIONS,但其他情况则相同):
private static final String EJBQL =
"select officeView from OfficeView officeView";
private static final String[] RESTRICTIONS = {
"lower(officeView.addr1) like concat(lower(#{officeViewList.officeView.addr1}),'%')",
"lower(officeView.buildingId) like
concat(lower({officeViewList.officeView.buildingId}),'%')",
"lower(officeView.circuitId) like
concat('%',lower({officeViewList.officeView.circuitId}),'%')",};
public OfficeViewList() {
setEjbql(EJBQL);
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
setMaxResults(25);
}
SQL转换大致是
从office_view中选择*,按office_id
排序
我正在考虑使用setOrder或setOrderColumn,就像这样
public OfficeViewList() {
setEjbql(EJBQL);
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
setOrderColumn("office_id");
setMaxResults(25);
}
但我无法弄清楚如何做到这些是否合适。我找不到任何真正解释如何使用这些文档的文档。
或者我是否通过EJBQL语句添加某种“order by”子句?
或者是否有要添加到我的实体bean的注释?还是构造函数?
选择太多,知识不够。
提前谢谢。
TDR
答案 0 :(得分:3)
我最后添加了
setOrderColumn("officeView.officeId");
到构造函数,这完全符合我的要求。
答案 1 :(得分:0)
EntityQuery只在第一次加载限制数组,然后他不再调用限制。 因此,如果您想使用相同的EntityQuery对象并使用第二个解决方案更改限制,我也会使用它。或者初始化另一个EntityQuery对象并设置不同的限制。