Dropwizard休眠字段未填充
Posted
技术标签:
【中文标题】Dropwizard休眠字段未填充【英文标题】:Dropwizard hibernate field not populating 【发布时间】:2014-09-02 10:56:08 【问题描述】:我有一个非常简单的用户实体,它从 (h2) 数据库填充用户名和密码字段。
我似乎无法为boolean isAdmin
添加更多字段 - 我已经尝试过原始和对象布尔值。记录了 SQL 休眠执行,当我运行它时,它会返回给定用户的用户表中的所有字段,包括 boolean
值 (true
)。然而Boolean
仍然是null
。
有什么想法可以让这个字段填充吗?
@Entity
@Table(name = "users")
@NamedQueries(
@NamedQuery(
name = "eu.wansdyke.smaash.core.User.findAll",
query = "SELECT u FROM User u"
),
@NamedQuery(
name = "eu.wansdyke.smaash.core.User.deleteByUsername",
query = "DELETE FROM User WHERE username = :username"
),
@NamedQuery(
name = "eu.wansdyke.smaash.core.User.findByUsername",
query = "SELECT u FROM User u WHERE u.username = :username"
)
)
@NamedNativeQueries(
@NamedNativeQuery(
name = "eu.wansdyke.smaash.core.User.setPassword",
query = "merge into users (username, password) key(username) values (:username, :password)"
)
)
public class User
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "isadmin", nullable = false)
private Boolean isAdmin;
public User()
public User(String username)
this.username = username;
public long getId()
return id;
public String getUsername()
return username;
public String getPassword()
return password;
public Boolean isAdmin()
return isAdmin;
【问题讨论】:
【参考方案1】:纯 OOP 的一种方式是使用完整的构造函数(没有 id)
public User(String username, String password, Boolean isAdmin)
this.username = username;
this.password = password;
this.isAdmin = isAdmin;
现在,您可以在将字段保存到数据库之前对其进行初始化。
【讨论】:
该字段值在数据库中,它在读取它时它没有被填充。 它应该被这个构造函数填充。【参考方案2】:知道了。
我使用的 dropwizard 身份验证器代码是创建用户对象本身,而不是使用休眠检索的对象。休眠代码很好。
【讨论】:
以上是关于Dropwizard休眠字段未填充的主要内容,如果未能解决你的问题,请参考以下文章