我正在尝试为我的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;
}
}
编辑:我仍在试图找出它无法正常工作的原因。它实际上曾经短暂地开始工作,但第二天又继续抛出错误。我会继续调查。