【发布时间】:2012-12-18 21:20:16
【问题描述】:
在我的项目中我得到“无法插入表格错误”,我在这里添加了必要的代码部分并希望最好:)
我的登录课程
package DAO;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.AnnotationConfiguration;
import tables.Users;
public class LogIn {
Session session;
public boolean RegisterUsers(Object user) {
if (SaveDatabase(user)) {
return true;
} else {
return false;
}
}
public boolean GetUsersWithId(Users user) {
SessionFactory sessionfactory = new Configuration().configure()
.buildSessionFactory();
session = sessionfactory.openSession();
user = (Users) session.get(Users.class, user.getUserId());
session.close();
if (user == null) {
return false;
} else {
return true;
}
}
public boolean SaveDatabase(Object object) {
try {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
Long courseId = null;
try {
transaction = session.beginTransaction();
session.save(object);
courseId = (Long) session.save(object);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
System.out.println(e.getMessage());
return false;
}
} finally {
session.close();
}
return true;
}
}
HibernateUtil
package DAO;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
这些代码的测试类
import DAO.LogIn;
import tables.Location;
import tables.Users;
public class Test {
public static void main(String[] args) {
// Test RegisterUser and GetUsersWithId in here
LogIn test = new LogIn();
Users user = new Users();
user.setUserEmail("email");
user.setUserAdress("adres here");
user.setUserFbId(3);
test.RegisterUsers(user);
}
}
感谢您的帮助
编辑:删除配置。 xml 文件和自动创建的用户类来清理混乱。
【问题讨论】:
-
那是大量的代码。有人打算为您调试它吗?你能提供一个short example,大约是大小的1/40,并产生同样的错误吗?
-
您能否将代码简化为一个最小示例并添加确切的错误消息/堆栈跟踪?
-
另外,对于您的用户类来说,变量太多了。您应该将其重构为其他对象。
-
我尽力总结了这个问题。此外,Users 是一个数据库表,通过休眠自动创建,这就是为什么它上面有很多变量。
-
session.save(object); courseId = (Long) session.save(object);你为什么要这样做两次?哪一行失败了?