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休眠字段未填充的主要内容,如果未能解决你的问题,请参考以下文章

如果未填充所有字段,如何选择字段集、展开以及更改类?

猫鼬填充未填充必填字段

Django 自动完成灯:未填充字段

mongoose 模式未在填充字段中注册错误

我的网站未显示 Chrome 电子邮件字段自动填充选项

来自 JQuery 填充字段的值未绑定到 MVC 模型