休眠基本示例不起作用
Posted
技术标签:
【中文标题】休眠基本示例不起作用【英文标题】:Hibernate Basic Example not working 【发布时间】:2015-11-16 13:44:44 【问题描述】:我正在尝试实现一个基本的 Hibernate 示例,但我无法让它工作。
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class SimpleTest
public static void main(String[] args)
SessionFactory sessionFactory = new Configuration().
configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Lecturer lecturer1 = new Lecturer();
lecturer1.setFirstName("Fatma");
lecturer1.setLastName("Meawad");
session.save(lecturer1);
tx.commit();
System.out.println
("The lecturer " + lecturer1.getFirstName()+ " "
+ lecturer1.getLastName()+" is successfully added to your database");
每次我尝试运行它时都会得到:
线程“主”org.hibernate.HibernateException 中的异常:无法 建立 JDBC 连接 [jdbc:mysql//127.0.0.1:3306/sampledb] org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:77) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) 在 org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) 在 SimpleTest.main(SimpleTest.java:11) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
我今天刚开始使用 Hibernate,但经过一整天的尝试,我无法让一个基本示例(我尝试了其他示例)工作。我忘记了什么?
编辑:我的 hibernate.cfg.xml
<?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>
<!-- ________________ To be Edited _________________ -->
<property name="connection.url">jdbc:mysql//127.0.0.1:3306/sampledb</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
<!-- _____________ End of To be Edited ______________ -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<!-- _________ Defining the Mapping Files ___________ -->
<mapping resource="Lecturer.hbm.xml" />
</session-factory>
</hibernate-configuration>
【问题讨论】:
你能手动连接到这个数据库吗? 是的,我可以连接数据库了。 您能否将hibernate.cfg.xml的内容添加到问题中。 你的 connection.url 值是 hibernate.cfg.xml 文件中的 jdbc:mysql//127.0.0.1:3306/MySQL/sampledb 但是在错误日志中是 jdbc:mysql//127.0.0.1:3306/sampledb。怎么样? 我尝试了更多方法来修复它,并编辑了 hibernate.cfg.xml 文件。我已经更正了。 【参考方案1】: <property name="hibernate.hbm2ddl.auto">update</property>
在你的 hibernate.cfg.xml 中添加这个,然后再试一次
【讨论】:
您能否解释一下为什么这会解决问题?以上是关于休眠基本示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如果不在事务中,休眠 session.update 不起作用