首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java hibernate在启动时抛出异常

Java hibernate在启动时抛出异常
EN

Stack Overflow用户
提问于 2016-06-18 19:26:14
回答 4查看 4.7K关注 0票数 0

我现在正在使用Hibernate处理一个项目,但在运行我的项目时遇到错误。

在server.java (我的入口点)上,我得到了这个:

代码语言:javascript
复制
private static HibernateUtil hibernateUtil;

在我的入口点:

代码语言:javascript
复制
hibernateUtil = new HibernateUtil();

这是我的HibernateUtil类:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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>

现在我得到的错误是:

代码语言:javascript
复制
  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

我在MacOSX10.10和MAMP上运行Eclipse mars2。MySQL正在运行,数据库用户和数据库存在,并且密码正确。有什么问题吗?

EN

回答 4

Stack Overflow用户

发布于 2017-01-06 16:58:20

我和你有同样的问题。似乎我们都从Hibernate官方代码示例中复制了代码。我认为这可能是mysql connecotrj 6.0的错误。在我向catch语句添加throw语句后:

代码语言:javascript
复制
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
        .configure()
        .build();
try {
    sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
} catch (Exception e) {
    StandardServiceRegistryBuilder.destroy(registry);
    throw new RuntimeException(e);
}

我发现了原始异常:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-09-13 22:15:48

当我的映射文件包含一列两次时,我也遇到了同样的问题

代码语言:javascript
复制
    <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"/>

因此,一旦我将一个状态更改为适当的属性,例如

代码语言:javascript
复制
<property column="SITE" name="site" type="java.lang.String" not-null="true"/>

问题已解决。所以要小心你的映射

票数 0
EN

Stack Overflow用户

发布于 2018-02-09 10:18:12

在我的例子中,我使用的是Netbeans,并且我的实体只使用Netbeans生成。

在摆弄了mysql和hibernate核心jar版本之后,在评论@NamedQueries之后,我修复了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37896398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档