个人认为较好的办法(复杂): 在ejb-jar.xml中的<query> <query> <query-method> <method-name>findName</method-name> <method-params> <method-param>String</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT o FROM containerManaged o WHERE name > ?1]]> </ejb-ql> </query><query> <query-method> <method-name>findAge</method-name> <method-params> <method-param>String/int</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT o FROM containerManaged o WHERE age > ?1]]> </ejb-ql> </query> <query> <query-method> <method-name>findAddress</method-name> <method-params> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT o FROM containerManaged o WHERE addressType IS ?]]> </ejb-ql> </query> ..... ... <query> <query-method> <method-name>findNullPerson</method-name> <method-params> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT o FROM containerManaged o WHERE age and name IS ?]]> </ejb-ql> </query>实际是3种情况的组合
在ejb-jar.xml中的<query>
<query>
<query-method>
<method-name>findName</method-name>
<method-params>
<method-param>String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT o FROM containerManaged o WHERE name > ?1]]>
</ejb-ql>
</query><query>
<query-method>
<method-name>findAge</method-name>
<method-params>
<method-param>String/int</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT o FROM containerManaged o WHERE age > ?1]]>
</ejb-ql>
</query>
<query>
<query-method>
<method-name>findAddress</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT o FROM containerManaged o WHERE addressType IS ?]]>
</ejb-ql>
</query>
.....
...
<query>
<query-method>
<method-name>findNullPerson</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT o FROM containerManaged o WHERE age and name IS ?]]>
</ejb-ql>
</query>实际是3种情况的组合