hibernate过滤器不适用于subselect查询

时间:2015-05-15 16:39:48

标签: java hibernate hql

我在.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服务器的问题?还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

使用subselect的提取模式时,我遇到了类似的问题。

hibernate-core中似乎有一个错误,并已在最新版本中修复。

这里是the link