即使Query有,Hibernate Criteria也找不到任何东西

时间:2017-04-30 22:37:13

标签: java spring hibernate

我正在尝试为我的ZipDAO实现创建一个findZIP方法,并且在成功之前搜索我在同一项目中使用的数据库的Criteria方法不起作用。

这是我尝试使用的方法无效并返回null(?):

public ZIP findZIP(String zip){
        Session session = sessionFactory.getCurrentSession();
        Criteria crit = session.createCriteria(ZIP.class);
        crit.add(Restrictions.eq("zip", zip));
        return (ZIP) crit.uniqueResult();
}

但是当我使用这种方法时,它可以工作:

public ZIP findZIP(String zip){
        String sql = "Select new " + ZIP.class.getName() + "(z.zip, z.city) " + " from " + ZIP.class.getName() + " z where z.zip = " + zip;
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(sql);
        return (ZIP)query.uniqueResult();
}

sessionFactory是一个自动装配的bean,同样在其他DAO中以相同的方式成功使用

@Autowired
private SessionFactory sessionFactory;

我是Hibernate和Spring的新手,所以我可能做错了一些事情,所以请随意指出一些事情。

最重要的是,你知道为什么这不起作用吗?

谢谢

ZIP实体:

@Entity
@Table(name = "ZIP")
public class ZIP implements Serializable {

    private String zip;
    private String city;

    public ZIP(){}

    public ZIP(String zip, String city){
        this.zip = zip;
        this.city = city;
    }

    @Id
    @Column(name = "ZIP", length = 6, nullable = false)
    public String getZip() {
        return zip;
    }

    public void setZip(String zip) {
        this.zip = zip;
    }

    @Column(name = "CITY", length = 30, nullable = false)
    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

编辑:我仍在试图找出它无法正常工作的原因。它实际上曾经短暂地开始工作,但第二天又继续抛出错误。我会继续调查。

0 个答案:

没有答案