如何将休眠参数设置为“ null”?例:
Query query = getSession().createQuery("from CountryDTO c where c.status = :status and c.type =:type")
.setParameter("status", status, Hibernate.STRING)
.setParameter("type", type, Hibernate.STRING);
就我而言,状态字符串可以为null。我已对此进行调试,然后休眠,然后生成这样的SQL字符串/查询..... status = null
但这在MYSQL中不起作用,因为正确的SQL语句必须为“ status is null
”(Mysql无法理解status =
null并对此求值为false,因此根据我已阅读的mysql文档,查询将不会返回任何记录…)
我的问题:
为什么不Hibernate
将空字符串正确地转换为“ is null”(而是错误地创建“ = null”)?
重写此查询以使其为null安全的最佳方法是什么?使用nullsafe的意思是,在“状态”字符串为null的情况下,它应该创建“为null”?
我相信休眠首先将您的HQL查询转换为SQL,然后才尝试绑定您的参数。这意味着它不能从重写查询param = ?
到param is null
。
尝试使用Criteria API:
Criteria c = session.createCriteria(CountryDTO.class);
c.add(Restrictions.eq("type", type));
c.add(status == null ? Restrictions.isNull("status") : Restrictions.eq("status", status));
List result = c.list();
问题内容: 如何将hibernate参数设置为“空”?例: 就我而言,状态字符串可以为null。我已经调试了它,然后hibernate,然后生成了这样的SQL字符串/查询..... 但这在MYSQL中不起作用,因为正确的SQL语句必须为“ ”(Mysql无法理解status=null并对此进行评估为false,因此根据我已阅读的mysql文档,查询将不会返回任何记录…) 我的问题: 为什么不将空字
问题内容: 我对HQL查询和hibernate有疑问。 我有一个用户类和一个角色类。用户可以具有许多角色。所以我有一个像这样的ManyToMany关系: 在用户类别中: 在角色类中: 此映射创建了存储关系的第三个表(PORTAIL_USERROLE)。像这样一切正常。当我有一个用户时,我将检索角色。 但是,我的问题是:在HQL查询中,如何获得具有特定角色的所有用户?任何类都代表PORTAIL_US
问题内容: 例如,我有此查询 我想将ID设置为列表(1,2,3,4,5,6,17,19)。 此代码不起作用 结果,我想有这样的SQL查询 问题答案: 使用。您还必须在列表参数周围加上括号。
问题内容: 当前,查询采用单个reportID来返回结果。现在,如果我想传递多个reportID并在一次调用中将o / p返回给数据库,我该怎么做? 我尝试通过arrayList但没有运气。出现以下错误 java.util.ArrayList与java.lang.String不兼容 问题答案: 试试这个
问题内容: 给出以下HQL查询: 我使用Query对象的方法进行设置。 我想使用对象进行设置,但是在查看Hibernate文档和方法列表时,我看不出要使用哪种明显的选择。有任何想法吗? 问题答案: 使用,的Javadoc在这里。 有四种变体可供选择。
问题内容: 我们的应用程序将Hibernate用于ORM,并将数据存储在多个模式中,并使用为其应用程序定制了授权的用户访问它们。 模式名称是在运行时基于数据确定的;将它们的名称包含在实体映射文档中是不可行的。这意味着我需要一种方法来告诉Hibernate在执行查找时使用特定的架构名称。有没有办法做到这一点? 问题答案: 这是一个页面,列出了一些在Hibernate中管理多个模式的方法。我可能会去实