Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠条件列表始终返回0项_Java_Spring_Hibernate - Fatal编程技术网

Java 休眠条件列表始终返回0项

Java 休眠条件列表始终返回0项,java,spring,hibernate,Java,Spring,Hibernate,我的DAO(findByUsername)中的函数始终返回0行,无论我是否更改实体类,即使从实体中删除注释,也没有例外,只有0行。根据我找到的一些示例,这段代码是在基于spring的应用程序中实现的 DAO: @Repository("userDao") public class UserDao extends CustomHibernateDaoSupport { public void save(User user) { getHibernateTemplate().

我的DAO(findByUsername)中的函数始终返回0行,无论我是否更改实体类,即使从实体中删除注释,也没有例外,只有0行。根据我找到的一些示例,这段代码是在基于spring的应用程序中实现的

DAO

@Repository("userDao")
public class UserDao extends CustomHibernateDaoSupport {
    public void save(User user) {
        getHibernateTemplate().save(user);
    }

    public void delete(User user) {
        getHibernateTemplate().delete(user);
    }

    public User findByUsername(String username) throws DataNotFoundException {
        Session session = getSession();
        Criteria crit = session.createCriteria(User.class);
        System.out.println(username);
        crit.add(Restrictions.eq("username", username));
        crit.setMaxResults(1);

        List<User> users = crit.list();
        System.out.println(users);
        if (users.size() < 1) {
            throw new DataNotFoundException();
        }


        return users.get(0);
    }
}
@Entity
@Table(name = "users")
public class User {
    private Integer id;
    private String username;
    private String password;
    private boolean active;
    private String activationCode;
    private Date createdAt;
    private String email;
    private Set<Wall> walls = new HashSet<Wall>();

    @Id
    @GeneratedValue
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "username", unique = true, nullable = false)
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Column(name = "password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Column(name = "active")
    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    @Column(name = "activation_code")
    public String getActivationCode() {
        return activationCode;
    }

    public void setActivationCode(String activationCode) {
        this.activationCode = activationCode;
    }

    @Column(name = "created_at", columnDefinition = "DATETIME")
    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "users_has_walls", joinColumns = { 
            @JoinColumn(name = "user_id", nullable = false, updatable = false) }, 
            inverseJoinColumns = { @JoinColumn(name = "wall_id", 
                    nullable = false, updatable = false) })
    public Set<Wall> getWalls() {
        return walls;
    }

    public void setWalls(Set<Wall> walls) {
        this.walls = walls;
    }
}
@Repository(“userDao”)
公共类UserDao扩展了CustomHibernateDaoSupport{
公共作废保存(用户){
getHibernateTemplate().save(用户);
}
公共作废删除(用户){
getHibernateTemplate().delete(用户);
}
公共用户findByUsername(字符串用户名)引发DataNotFoundException{
Session=getSession();
Criteria crit=session.createCriteria(User.class);
System.out.println(用户名);
标准添加(Restrictions.eq(“用户名”,username));
临界setMaxResults(1);
列表用户=crit.List();
System.out.println(用户);
if(users.size()<1){
抛出新的DataNotFoundException();
}
返回用户。获取(0);
}
}
实体

@Repository("userDao")
public class UserDao extends CustomHibernateDaoSupport {
    public void save(User user) {
        getHibernateTemplate().save(user);
    }

    public void delete(User user) {
        getHibernateTemplate().delete(user);
    }

    public User findByUsername(String username) throws DataNotFoundException {
        Session session = getSession();
        Criteria crit = session.createCriteria(User.class);
        System.out.println(username);
        crit.add(Restrictions.eq("username", username));
        crit.setMaxResults(1);

        List<User> users = crit.list();
        System.out.println(users);
        if (users.size() < 1) {
            throw new DataNotFoundException();
        }


        return users.get(0);
    }
}
@Entity
@Table(name = "users")
public class User {
    private Integer id;
    private String username;
    private String password;
    private boolean active;
    private String activationCode;
    private Date createdAt;
    private String email;
    private Set<Wall> walls = new HashSet<Wall>();

    @Id
    @GeneratedValue
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "username", unique = true, nullable = false)
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Column(name = "password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Column(name = "active")
    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    @Column(name = "activation_code")
    public String getActivationCode() {
        return activationCode;
    }

    public void setActivationCode(String activationCode) {
        this.activationCode = activationCode;
    }

    @Column(name = "created_at", columnDefinition = "DATETIME")
    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "users_has_walls", joinColumns = { 
            @JoinColumn(name = "user_id", nullable = false, updatable = false) }, 
            inverseJoinColumns = { @JoinColumn(name = "wall_id", 
                    nullable = false, updatable = false) })
    public Set<Wall> getWalls() {
        return walls;
    }

    public void setWalls(Set<Wall> walls) {
        this.walls = walls;
    }
}
@实体
@表(name=“users”)
公共类用户{
私有整数id;
私有字符串用户名;
私有字符串密码;
私有布尔活动;
私有字符串激活码;
私人日期创建日期;
私人字符串电子邮件;
私有集walls=新HashSet();
@身份证
@生成值
@列(name=“id”,unique=true,nullable=false)
公共整数getId(){
返回id;
}
公共无效集合id(整数id){
this.id=id;
}
@列(name=“username”,unique=true,nullable=false)
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
@列(name=“password”)
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
@列(name=“active”)
公共布尔isActive(){
主动返回;
}
public void setActive(布尔激活){
这个.active=active;
}
@列(name=“激活码”)
公共字符串getActivationCode(){
返回激活码;
}
公共void setActivationCode(字符串activationCode){
this.activationCode=activationCode;
}
@列(name=“created_at”,columnDefinition=“DATETIME”)
公共日期getCreatedAt(){
返回createdAt;
}
公共void setCreatedAt(日期createdAt){
this.createdAt=createdAt;
}
@列(name=“email”)
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“users\u有墙”,joinColumns={
@JoinColumn(name=“user\u id”,nullable=false,updateable=false)},
inverseJoinColumns={@JoinColumn(name=“wall\u id”,
nullable=false,updateable=false)})
公共集getWalls(){
返回墙;
}
公共空心设置墙(设置墙){
这个。墙=墙;
}
}

解决方案是将导入声明更改为

import javax.persistence.Entity;
而不是冬眠。
未导入用户实体类。

明显的问题:数据库中是否有数据?还可以使用
crit.uniqueResult()
返回单个元素,而不是
crit.list().get(0)Hibernate生成的SQL是什么?有时,生成的SQL将不符合您对它应该做什么的期望。使用独立工具自行运行SQL以帮助调试问题。将SQL日志记录设置“hibernate.show_SQL”打开为“true”,并检查生成的查询。尝试手动对数据库运行查询从HQL获取信息:用户未映射[来自用户]。我在users表中有一行。hibernate似乎并没有映射我的类,而是将其更改为扫描整个包,并在运行时将实体打开为异常。即:com.walladverts.model.entities.Post.user中的未知映射,引用的属性未知:com.walladverts.model.entities.user.user