我在.xml中声明了Hibernate过滤器,如下所示:
<filter name="login" condition="loginUsuario like '%' :loginParam '%'"/>
<filter name="pais" condition="nombreUniversidad in (select u.nombre from Universidad u where u.pais like :paisParam '%')"/>
然后在DAO中我打电话给他们:
if(filters.containsKey("usuario.login")){
getSession().enableFilter("login").setParameter("loginParam", filters.get("usuario.login"));
}
if(filters.containsKey("universidad.pais.nombre")){
getSession().enableFilter("pais").setParameter("paisParam", filters.get("universidad.pais.nombre"));
}
然后是hql查询:
List<Contrato> l=getSession.createQuery("select c from Contrato c").list();
第一个工作正常,但第二个工作失败。我发现带子查询的过滤器失败了。
奇怪的是,在家里工作都很好但是当我部署必须工作的应用程序时,第二个过滤器失败了。我无法访问日志或使用“System.out.println”填充所有代码,因为它不是开发环境。我只向他们发送一个.WAR存档,然后他们部署它。我只知道第二个过滤器不起作用,因为我看到过滤数据的屏幕输出。
我在家中使用相同的技术(Tomcat 7.0.39和Mysql 5.1.73)在Windows中运行。 是应用服务器还是Mysql服务器的问题?还有其他想法吗?