我将项目中的hibernate从版本3升级到4 我试图从数据库中选择一些东西:
Configuration config;
SessionFactory sf;
ServiceRegistry sr;
private static Manager m;
private Manager() {
config = new Configuration();
config.addAnnotatedClass(User.class);
config.addAnnotatedClass(Produs.class);
config.configure("hibernate.cfg.xml");
sr = new ServiceRegistryBuilder().applySettings(config.getProperties())
.buildServiceRegistry();
new SchemaExport(config).create(true, true);
sf = config.buildSessionFactory(sr);
}
public void getProducts(){
Session s = sf.getCurrentSession();
s.beginTransaction();
Query q=s.createQuery("from Produs as p WHERE p.numeProdus LIKE :numeP AND p.descriere LIKE :descriereP AND p.categorie LIKE :categorieP");
q.setParameter("numeP", "%"+produs.getNumeProdus()+"%");
q.setParameter("descriereP", "%"+produs.getDescriere()+"%");
q.setParameter("categorieP", "%"+produs.getCategorie()+"%");
List l=q.list();
return l;
}
我从函数" getProducts"中做了同样的事情。在hibernate 3中,这有效。在版本4中不再有效。
答案 0 :(得分:0)
在3到4之间有一些变化。这是我从3升级到4后我必须要做的事情。
if (session.getTransaction() != null
&& session.getTransaction().isActive()) {
txD = session.getTransaction();
} else {
txD = session.beginTransaction();
}
//txD = session.beginTransaction();
// txD.begin() ;
session.saveOrUpdate(dataStore);
try {
txD.commit();
while (!txD.wasCommitted())
;
}