相关疑难解决方法(0)

Hibernate:如何使用HQL设置NULL查询参数值?

如何将Hibernate参数设置为"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);
Run Code Online (Sandbox Code Playgroud)

在我的例子中,状态String可以为null.我调试了这个,然后hibernate然后生成一个像这样的SQL字符串/查询.... status = null但是这在MYSQL中不起作用,因为正确的SQL语句必须是" status is null"(Mysql不理解status = null并且计算这个为了没有任何记录将被返回查询,根据我读过的mysql文档...)

我的问题:

  1. 为什么没有Hibernate正确地将空字符串转换为"is null"(而且错误地创建"= null")?

  2. 重写此查询以使其为空安全的最佳方法是什么?使用nullsafe,我的意思是,如果"status"字符串为null,则应该创建"is null"?

非常感谢你!蒂姆

java null hibernate

57
推荐指数
5
解决办法
12万
查看次数

如何在Hibernate查询中将Integer参数设置为null?

我有一个实体:

    @Entity
    @Table(name = "smsc.security_users")
    public class User {

        @Id
        @Column(name = "id")
        private int id;

        @Column(name = "username")
        private String username;

        @Column(name = "password")
        private String password;

        @Column(name = "enabled")
        private int enabled;

        @Column(name = "master_id", nullable = true)
        private Integer master_id;

        @Temporal(TemporalType.TIMESTAMP)
        @Column(name = "passwordExpiration")
        private Date passwordExpiration;

        public String getUsername() {
            return username;
        }
        ...
Run Code Online (Sandbox Code Playgroud)

我在说master_id.这是我的DAO方法:

public void add(String userName, String password, Integer master_id) {
        Session session = null;
        session = this.sessionFactory.getCurrentSession();
        Query query = …
Run Code Online (Sandbox Code Playgroud)

java hibernate

18
推荐指数
2
解决办法
3万
查看次数

标签 统计

hibernate ×2

java ×2

null ×1