Jboss-QL 中的动态sql查询问题

如果我想拼语句,而不是传参数,对应日期类型,该怎么处理?

WHERE reservation.arrivalDate = ?1

传递的参数必须是Date

你这种方法是传参数,而我相直接拼语句,如
StringBuffer jbossQl = new StringBuffer();
jbossQl.append("SELECT OBJECT(g) ");
jbossQl.append("FROM gangster g ");
jbossQl.append("WHERE g.hangout.state ='1' and");
^^^我直接拼,不传参数了
jbossQl.append("g.hangout.begindate =??????");
^^^^^^^不会写

public abstract class GangsterBean implements EntityBean {
public abstract Set ejbSelectGeneric(String jbossQl, Object[] arguments)
throws FinderException;
public Set ejbHomeSelectInStates(Set states) throws FinderException {
// generate JBossQL query
StringBuffer jbossQl = new StringBuffer();
jbossQl.append("SELECT OBJECT(g) ");
jbossQl.append("FROM gangster g ");
jbossQl.append("WHERE g.hangout.state IN (");
for(int i = 0; i < states.size(); i++) {
if(i > 0) {
jbossQl.append(", ");
}
jbossQl.append("?").append(i+1);
}
jbossQl.append(") ORDER BY g.name");
// pack arguments into an Object[]
Object[] args = states.toArray(new Object[states.size()]);
// call dynamic-ql query
return ejbSelectGeneric(jbossQl.toString(), args);
}
}

<jbosscmp-jdbc>
<enterprise-beans>
<entity>
<ejb-name>GangsterEJB</ejb-name>
<query>
<query-method>
<method-name>ejbSelectGeneric</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.Object[]</method-param>
</method-params>
</query-method>
<dynamic-ql/> <!--注意这里的!!!!!-->
</query>
</entity>
</enterprise-beans>
</jbosscmp-jdbc>

上面的
if(i > 0) {
jbossQl.append(", ");
}
jbossQl.append("?").append(i+1);
}
是否符合你的需要?

上面你讲的我知道,因为我也有文档。
我现在不想一个一个拼语句,再一个一个传参数,
我想一次拼好语句(把参数信息也拼进去),这样,
我就不用传参数了。
return ejbSelectGeneric(jbossQl.toString(), new Object[0]);

那你做个类或方法就可以了

用Jboss-Ql这种方式,会对参数语句prepare吗?

建议你试验一下,大家分享一下。

Collection MeetingCol = genericFacade.findDynamic(MeetingManagement.class.getName(),"select object(o) from MeetingManagementBean as o where o.meetingManagementId = '55' and o.time ='2002-09-04 00:00:00.000'",paramclass, paramobject);
error message:
Caused by:
javax.ejb.FinderException: Syntax error in query at: 96; select object(o) from MeetingManagementBean as o where o.meetingManagementId = '55' and o.time =***ERROR*** '2002-09-04 00:00:00.000'

有谁处理过日期类型?