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

}

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 ファイルと自動作成された Users クラスを使用して混乱を解消します。

4

2 に答える 2

2

という名前のフィールドsessionと、同じく という名前のローカル変数がありsessionます。Hibernate セッションを開いてローカル変数に割り当てますが、ローカル変数ではなくフィールドを閉じます

フィールドを削除しsessionます。そのようなフィールドに Hibernate セッションを保存しないでください。意味がありません。その後、より大きなスコープ (try ブロックの外) でセッション ローカル変数を宣言することによって修正する必要があるコンパイル エラーが発生します。

于 2012-12-18T22:35:08.647 に答える