Java Hibernate在cfg.buildSessionFactory()处突然挂起
我已经开始学习Hibernate,并遵循一些教程。 在尝试其中一个例子时,我无法继续,也无法看到或理解到底发生了什么 这是我的代码…(我有一个普通的cfg文件) 我的班级如下: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<
<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