关于Seam的EntityQuery的信息?

时间:2010-05-19 13:39:49

标签: hibernate seam entity

我已经使用Seam和JPA / Hibernate很长一段时间了,但刚开始考虑更多地使用EntityHome和EntityQuery类。 EntityHome在它是什么以及如何利用它方面似乎相对简单。但是,EntityQuery有点不太明确。

我理解抓住的能力,例如,包含所有给定实体的列表。但是,我也看到了一些使用RESTRICTIONS数组的例子。这到底是怎么用的? OR条件或AND条件?任何人都可以给我一些关于如何使用EntityQuery的更详细信息吗?我已经检查了我在Seam和JPA上的几本书,但它们都没有真正引用EntityQuery类。这似乎是我非常有用的机制,如果可以的话,我想更多地使用它们。谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我想从专业的角度说,你应该远离。

您可以阅读我对您不应该使用它的原因的评论here

如果您想使用它,您必须知道这是您正在采取的权衡。它会使事情变慢,但它更容易使用。

那就是说,让我试着用一些例子回答你的问题:

However, I've also seen some examples using a RESTRICTIONS array. How exactly is this used? Are the OR conditions or AND conditions?

自Seam 2.2.0(如果我没有记错)你可以选择使用OR / AND添加RESTRICTIONS。 您可以在视图中使用restrictionLogicOperator运算符进行设置,如下所示:

<ui:define name="label">Match</ui:define>
<h:selectOneRadio id="logic" value="#{myEnityQueryList.restrictionLogicOperator}" styleClass="radio">
  <f:selectItem itemLabel="AND" itemValue="and"/>
  <f:selectItem itemLabel="OR" itemValue="or"/>
</h:selectOneRadio>

此代码应该是与EntityQuery对象一起映射的表单的一部分以及一些RESTRICTIONS。这些限制用于过滤查询,以便您可以检索正确的结果集。例如:

private static final String[] RESTRICTIONS = { "lower(person.name) like lower(concat(#{personList.person.name},'%'))"}

因此,如果您的表单中有名称字段,则可以键入John,然后将John%添加到查询中。

Can anyone give me some more detailed information as to how EntityQuery is intended to be used?

EntityQuery旨在与某些搜索表单一起使用。您将表单绑定到要搜索的字段,然后它将根据上面描述的结果检索列表。

相关问题