Java Hibernate在cfg.buildSessionFactory()处突然挂起

Java Hibernate在cfg.buildSessionFactory()处突然挂起,java,hibernate,Java,Hibernate,我已经开始学习Hibernate,并遵循一些教程。 在尝试其中一个例子时,我无法继续,也无法看到或理解到底发生了什么 这是我的代码…(我有一个普通的cfg文件) 我的班级如下: <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernatedb<

我已经开始学习Hibernate,并遵循一些教程。 在尝试其中一个例子时,我无法继续,也无法看到或理解到底发生了什么

这是我的代码…(我有一个普通的cfg文件) 我的班级如下:

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernatedb</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>

 <property name="hbm2ddl.auto">create</property>
 <!--I have mapped only the userdetails class as Address class is to be embedded -->
<mapping class="pack.dto.UserDetails"/>
UserDetails.java:

 package pack.dto;

 @Entity
 @Table(name = "user_details")

 public class UserDetails {
    @Id
    private int userId;
    private String userName;
    @Temporal(TemporalType.DATE)
    private Date joinedDate;
    @Embedded
    private Address address;
    @Lob
    private String description;
    public Integer age;

    public int getUserId() {
       return userId;
    }

    public void setUserId(int userId) {
       this.userId = userId;
    }

    public String getUserName() {
       return userName;
    }

    public void setUserName(String userName) {
       this.userName = userName;
    }

    public Date getJoinedDate() {
       return joinedDate;
    }

    public void setJoinedDate(Date joinedDate) {
       this.joinedDate = joinedDate;
    }

    public Address getAddress() {
       return address;
    }

    public void setAddress(Address address) {
       this.address = address;
    }

    public String getDescription() {
       return description;
    }

    public void setDescription(String description) {
       this.description = description;
    }

    @Override
      public String toString() {
         return "UserDetails [userId=" + userId + ", userName=" + userName
            + ", joinedDate=" + joinedDate + ", address=" + address
            + ", description=" + description + ", age=" + age + "]";
}
}

我的Address.java类如下所示,我正试图将其嵌入UserDetails类中:

 package pack.dto;
 import javax.persistence.Embeddable;

 @Embeddable
 public class Address {
    private String street;
    private String city;
    private String state;
    private String pinCode;

    public String getStreet() {
       return street;
    }

    public void setStreet(String street) {
       this.street = street;
    }

    public String getCity() {
       return city;
    }

    public void setCity(String city) {
       this.city = city;
    }

    public String getState() {
       return state;
    }

    public void setState(String state) {
       this.state = state;
    }

    public String getPinCode() {
       return pinCode;
    }

    public void setPinCode(String pinCode) {
       this.pinCode = pinCode;
    }


 }
我的cfg文件中的一些重要标记如下:

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernatedb</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>

 <property name="hbm2ddl.auto">create</property>
 <!--I have mapped only the userdetails class as Address class is to be embedded -->
<mapping class="pack.dto.UserDetails"/>
当我尝试调试此代码时,代码卡在:

 SessionFactory sessionFactory = new Configuration().configure()
            .buildSessionFactory();
而且SessionFactory从未创建过。 原木被卡住在:

  Jan 03, 2016 8:02:20 AM org.hibernate.Version logVersion
  INFO: HHH000412: Hibernate Core {5.0.6.Final}
  Jan 03, 2016 8:02:20 AM org.hibernate.cfg.Environment <clinit>
  INFO: HHH000206: hibernate.properties not found
  Jan 03, 2016 8:02:20 AM org.hibernate.cfg.Environment      buildBytecodeProvider
  INFO: HHH000021: Bytecode provider name : javassist
  Jan 03, 2016 8:02:22 AM       org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
  INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
  Jan 03, 2016 8:02:22 AM   org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
  WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
  Jan 03, 2016 8:02:22 AM   org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/hibernatedb]
  Jan 03, 2016 8:02:22 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  INFO: HHH10001001: Connection properties: {user=root, password=****}
  Jan 03, 2016 8:02:22 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  INFO: HHH10001003: Autocommit mode: false
  Jan 03, 2016 8:02:22 AM  org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
  INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
  Jan 03, 2016 8:02:23 AM org.hibernate.dialect.Dialect <init>
  INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
  Jan 03, 2016 8:02:24 AM org.hibernate.tool.hbm2ddl.SchemaExport execute
  INFO: HHH000227: Running hbm2ddl schema export
  Hibernate: drop table if exists user_details
2016年1月3日上午8:02:20 org.hibernate.Version日志版本
信息:hh000412:Hibernate核心{5.0.6.Final}
2016年1月3日上午8:02:20 org.hibernate.cfg.Environment
信息:HH000206:找不到hibernate.properties
2016年1月3日上午8:02:20 org.hibernate.cfg.Environment buildBytecodeProvider
信息:HH000021:字节码提供程序名称:javassist
2016年1月3日上午8:02:22 org.hibernate.annotations.common.reflection.java.JavaReflectionManager
信息:HCANN000001:Hibernate Commons注释{5.0.1.Final}
2016年1月3日上午8:02:22 org.hibernate.engine.jdbc.connections.internal.driverManager连接提供MPL配置
警告:HHH10001002:使用Hibernate内置连接池(不用于生产!)
2016年1月3日上午8:02:22 org.hibernate.engine.jdbc.connections.internal.driverManager连接ProviderImpl buildCreator
信息:HHH10001005:在URL[jdbc:mysql://localhost/hibernatedb]
2016年1月3日上午8:02:22 org.hibernate.engine.jdbc.connections.internal.driverManager连接ProviderImpl buildCreator
信息:HHH10001001:连接属性:{user=root,password=***}
2016年1月3日上午8:02:22 org.hibernate.engine.jdbc.connections.internal.driverManager连接ProviderImpl buildCreator
信息:HHH10001003:自动提交模式:错误
2016年1月3日上午8:02:22 org.hibernate.engine.jdbc.connections.internal.PooledConnections
信息:HH000115:休眠连接池大小:1(最小值=1)
2016年1月3日上午8:02:23 org.hibernate.dialogue.dialogue
信息:HH000400:使用方言:org.hibernate.dialogue.mysqldialogue
2016年1月3日上午8:02:24 org.hibernate.tool.hbm2ddl.SchemaExport执行
信息:HH000227:正在运行hbm2ddl架构导出
Hibernate:删除表(如果存在)用户\u详细信息

日志没有继续
Hibernate:drop table if exists user\u details
。为什么会这样?我的代码有什么问题?为什么未创建SessionFactory?

U必须将端口置于配置中才能创建SessionFactory

<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- port 3306 or whatever u use -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>

org.hibernate.dialogue.mysqldialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernatedb
根
根
(1)在构建sessionFactory时,hibernate尝试读取文件名hibernate.cfg.xml

因此,您的cfg文件名必须与此相同

以下是您的cfg文件:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hbm2ddl.auto">create</property>
        <property name="show_sql">true</property>

        <mapping class="pack.dto.UserDetails" />
    </session-factory>
</hibernate-configuration>
下面是保存用户详细信息的代码

UserDetails user = new UserDetails();
user.setUserId(1);
user.setUserName("Neeraj");
user.setDescription("Great Coder");
user.setJoinedDate(new Date());
user.age = 24;

Address addrNeeraj = new Address();
addrNeeraj.setCity("Pune");
addrNeeraj.setPinCode("411004");
addrNeeraj.setState("Maharashtra");
addrNeeraj.setStreet("KarveRoad");
user.setAddress(addrNeeraj);

Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();

我面临着类似的问题。。就我而言,重新启动mysql服务起了作用

sudo service mysql restart
sudo service mysql restart