我有一个实体:
@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;
}
...
我在说master_id
。这是我的DAO方法:
public void add(String userName, String password, Integer master_id) {
Session session = null;
session = this.sessionFactory.getCurrentSession();
Query query = session
.createSQLQuery(
"INSERT INTO smsc.security_users(id,username,password,enabled,passwordExpiration,master_id) VALUES(smsc.SeqDictID.nextval+1,:userName,:password,1,:passwordExpiration,:master_id)")
.setString("userName", userName)
.setString("password", Sha1.getHash(password))
.setTimestamp("passwordExpiration", DateUtil.getTomorrow())
.setInteger("master_id", master_id);
int updated = query.executeUpdate();
}
日志说:
请求处理失败;嵌套的异常是java.lang.NullPointerException
并将指针放在这一行:
.setInteger("master_id", master_id);
master_id
有时必须为null。那么如何设置null?
如果您查看Query类的文档,setInteger()方法,
Query setInteger(String name,int val)
它以名称和 原始类型int 作为参数。
当您在 自动装箱 期间传递值为null的包装器类型Integer时,会发生空指针Exception。
例如:
Integer x = null;
int y = x; // gives a nullpointer exception.
你可以用
Query setParameter(String name,
Object val,
Type type);
设置空值的方法。
也可以看看:
```
问题内容: 给出以下HQL查询: 我使用Query对象的方法进行设置。 我想使用对象进行设置,但是在查看Hibernate文档和方法列表时,我看不出要使用哪种明显的选择。有任何想法吗? 问题答案: 使用,的Javadoc在这里。 有四种变体可供选择。
问题内容: 如何将hibernate参数设置为“空”?例: 就我而言,状态字符串可以为null。我已经调试了它,然后hibernate,然后生成了这样的SQL字符串/查询..... 但这在MYSQL中不起作用,因为正确的SQL语句必须为“ ”(Mysql无法理解status=null并对此进行评估为false,因此根据我已阅读的mysql文档,查询将不会返回任何记录…) 我的问题: 为什么不将空字
问题内容: 嗨,我有一个命名查询 我想这样设置限制: 但这在服务器启动时显示错误。我正在使用以下代码在DAO类中调用查询: 需要设置开始和结束参数。请帮忙。 问题答案: 正如@DataNucleus所说,LIMIT在JPQL中不是有效的关键字。这不是指定要返回多少行的方法。这是您的操作方式: 这将是调用命名查询的代码:
问题内容: 我有这样的HQL: 问题是它不理解关键字。有没有一种方法可以运行这样的查询而不将其分为两个子查询? 问题答案: 看一下如何在HQL中进行限价查询? 您不能用hql限制用hql编写的查询。您需要调用Query对象上的setMaxResults,我想这将阻止您对hql子查询施加限制。 这使您可以选择 将其编写为sql查询或 尝试寻找另一种编写hql查询的方法,以便您在子查询中不需要限制。
问题内容: 这是我的PostgreSQL函数: 它有一个参数,我想通过JPQL 将Java传递给它: 上面的代码失败,但例外: 所以我不确定如何从EclipseLink调用我的函数。 问题答案: 通过将String []类型的Java数组传递给您进行测试,以进行测试。似乎PgJDBC不接受Java数组作为带有或不带有参数的参数。 合规 JDBC规范 16.5“数组对象” 建议JDBC 部分存在,因
我想使搜索页面后,我点击它的按钮将被重定向到另一个页面。这一页将是这样的 还有我的路由器看起来像这样 问题是如何在Vue中获取目标页面中的查询值。JS3?这个答案仍然让我困惑,因为没有使用CompositionAPI,也没有在VueJS3中使用