2016-06-18 17 views
0

私は今、Hibernateでプロジェクトに取り組んでいますが、プロジェクトを実行中にエラーが発生します。 server.javaでJava Hibernateが起動時に例外をスローする

(私のエントリポイント)私はこれだ:

private static HibernateUtil hibernateUtil; 

そして、私のエントリポイントで:

hibernateUtil = new HibernateUtil(); 

これは私のHibernateUtilのクラスです:

public class HibernateUtil { 

    private SessionFactory sessionFactory; 

    public HibernateUtil() { 
     StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); 

     try { 
      sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 
     } 
     catch (Exception e) { 
      StandardServiceRegistryBuilder.destroy(registry); 
     } 
    } 

    public SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

を今私のHibernate.cf.xml:

<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">123</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dynamicdb</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> 
    <property name="show_sql">false</property> 
    <property name="connection.pool_size">1</property> 
</session-factory> 

そして今、これは私が取得エラーです:

Jun 18, 2016 1:17:17 PM org.hibernate.Version logVersion 
    INFO: HHH000412: Hibernate Core {5.2.0.Final} 
    Jun 18, 2016 1:17:17 PM org.hibernate.cfg.Environment <clinit> 
    INFO: HHH000206: hibernate.properties not found 
    Jun 18, 2016 1:17:17 PM org.hibernate.cfg.Environment buildBytecodeProvider 
    INFO: HHH000021: Bytecode provider name : javassist 
    Jun 18, 2016 1:17:18 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
    INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
    WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/dynamicdb] 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH10001001: Connection properties: {user=root, password=****} 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
    INFO: HHH10001003: Autocommit mode: false 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
    INFO: HHH000115: Hibernate connection pool size: 1 (min=1) 
    Jun 18, 2016 1:17:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop 
    INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/dynamicdb] 
    Jun 18, 2016 1:17:18 PM org.hibernate.service.internal.AbstractServiceRegistryImpl stopService 
    INFO: HHH000369: Error stopping service [class org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl] : java.lang.NullPointerException 

私はMAMPを搭載したMac OS X 10.10にEclipseの火星2を実行していますが。 MySQLが実行されており、データベースのユーザーとデータベースが存在し、パスワードが正しい。どうしたの?

+0

接続プールを定義する:http://www.mastertheboss.com/jboss-frameworks/hibernate-jpa/hibernate-configuration/configure-a-connection-pool-with-hibernate –

+0

を使用すると: 'catch(Exception e) {StandardServiceRegistryBuilder.destroy(registry);} 'デバッグに便利な例外を隠すことができます。少なくとも例外をログに記録できますか?ログの最後に表示されるNullpointerにはスタックトレースがありません。 – Thierry

+0

もこの質問を見てください:http:// stackoverflow。com/questions/16596528/hibernate-throwing-nullpointerexception – Thierry

答えて

0

私はあなたのような同じ問題があります。私たちはどちらもHibernate Officialコードサンプルからコードをコピーしているようです。私は多分それはmysqlのconnecotrj 6.0.After私はcatchステートメントにthrow文を追加のバグだと思う:

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() 
     .configure() 
     .build(); 
try { 
    sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 
} catch (Exception e) { 
    StandardServiceRegistryBuilder.destroy(registry); 
    throw new RuntimeException(e); 
} 

そして私は、元の例外が見つかりました:

Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. 

この場合は、MySQLのconnectorjには表示されません。 5.1

したがって、mysql jdbcドライバを5.1に切り替えるか、タイムゾーン引数をjdbc URL文字列thisのように追加します。 hibernate.cfg.xmlファイルで&を&ampに変更することを忘れないでください。

0

私のマッピングファイルは、一つの列が含まれていたとき、私は、例えば、適切なプロパティに1つの状態を変更したら、私はそうは二回

<property column="STATE" name="state" type="java.lang.String" not-null="true"/> 
    <property column="BRANCH" name="branch" type="java.lang.String" not-null="true"/> 
    <property column="COUNTRY" name="country" type="java.lang.String" not-null="true"/> 
    <property column="STATE" name="state" type="java.lang.String" not-null="true"/> 

を同じ問題を持って

<property column="SITE" name="site" type="java.lang.String" not-null="true"/> 

問題は解決しました。 マッピングには注意が必要です

0

私の場合、Netbeansを使用していて、Netbeansのみを使用してエンティティを生成していました。

@NamedQueriesがコメントした後、mysqlとhibernate-core jarのバージョンで操作した後、私のために修正されました。

関連する問題