7

そのため、 SQLServer用のMicrosoftJDBCDriver4.0を介してJavaアプリケーションをSQLServer2012に接続しようとしていますが、すべてが順調に進んでいるように見えますが、Hibernateは戻ってきてNullExceptionstry/catch(したがって、 ) 、NullException理由はまったくわかりません。これは、休止状態を実行しているnetbeans console()からのペーストビンe.getMessage()です(この質問の目的のために、私はと呼ばれるサンプルテーブルを使用していますprime_table)。

ペーストビンログで、あなたは気づくでしょう...

2013年2月11日17:21:04org.hibernate.cfg.ConfigurationdoConfigure情報:構成済みSessionFactory:null

なぜこれが起こっているのかについてのアイデアはありますか?(わかりませんが、スタックトレース全体に関連している可能性があります)。

その他のログ(JSPビルド中)

すべてのログは2013年3月中旬/下旬まで利用可能になります

リソース、私は読んでいます

事前構成されたNetbeansプロジェクトのセットアップcommandline: tree /f

netbeans
(出典:iforce.co.nz

Hibernate.cfg.xml ( Hari"hibernate.cache.provider_class"の提案に従って追加)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://Michael-PC:1433;databaseName=PrimeDB</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password">online12</property>
    <property name="hibernate.connection.pool_size">10</property>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- Data Mappings -->
    <mapping resource="prime.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

プライム

public class Prime {

    private long prime;

    public void setPrime(long nPrime){
        this.prime = nPrime;
    }

    public long getPrime(){
        return this.prime;
    }

}

prime.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="nz.co.xyleap.db.Prime" table="prime_table">
    <id name="prime" type="long" column="prime" />
  </class>
</hibernate-mapping>

プライムテーブル

CREATE TABLE prime_table (
    [prime] bigint PRIMARY KEY NOT NULL,
)

セッション機能またはFirstExample.java

public class FirstExample {

    public static void main(String[] args) {
        FirstExample ex = new FirstExample();
        ex.session();
    }

    public void session() {
        Session session = null;
        try {
            // This step will read hibernate.cfg.xml and prepare hibernate for use
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            session = sessionFactory.openSession();
            session.beginTransaction();
            //Create new instance of Contact and set values in it by reading them from form object
            System.out.println("inserting record 13");
            Prime p = new Prime();
            p.setPrime(13);
            session.save(p);
            System.out.println("Done");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            // Actual contact insertion will happen at this step
            session.flush();
            session.close();
        }
    }

}

私が知る限り、すべてが正しく、JavaHibernateからSQLデータベースにレコードを挿入できるはずです。しかし、何らかの理由で私はできません:-/

更新:それ自体で休止状態になり、正常に動作します。しかし、Springと組み合わせて、これらのエラーが発生します。(コメントの詳細情報)。

4

2 に答える 2

-1

session.flush(); で死んでいます。セッションがnullで、tryブロック内の何かが例外をスローしているため、おそらくnullpointerなどのruntimeexceptionです。セッションが null であるという事実により、別の nullptr が発生し、元の nullptr が隠されます。だから作ることをお勧めします

if(session!=null)
{
    session.flush();
    session.close();
}

そしてそれを実行して、実際の問題が何であるかを確認します。

「System.out.println(e.getMessage());」を置き換えることもお勧めします。少なくとも e.printStackTrace(); またはできれば適切なロギング。

于 2013-02-12T07:33:37.940 に答える