-2

在我的项目中,我得到“无法插入表格错误”,我在这里添加了必要的代码部分并希望最好:)

我的登录类

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;
    }

}

休眠实用程序

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 文件和自动创建的用户类来清理混乱。

4

2 回答 2

2

您有一个名为的字段session,以及一个也名为的局部变量session。您打开一个 Hibernate 会话并将其分配给局部变量,但您关闭了字段而不是局部变量

删除session字段。您不应该将 Hibernate Session 存储在这样的字段中。这没有意义。然后你会得到一个编译错误,你需要通过在更大的范围内(在 try 块之外)声明会话局部变量来修复它。

于 2012-12-18T22:35:08.647 回答
0

相同的字段名称在类级别的全局范围内,另一个在 SaveDatabase() 方法下的本地范围内。

解决方案:删除全局范围会话。

public class LogIn {
    Session session;    //Remove this field .....
于 2014-10-02T15:36:42.003 回答