我正在使用Hibernate 3和MySQL5.5.
我是hibernate的新手,我得到以下例外
Exception in thread "main" org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:106)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:152)
Run Code Online (Sandbox Code Playgroud)
我在hibernate.cfg.xml文件中设置了Dialect属性.我尝试了很多组合
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="DIALECT">org.hibernate.dialect.MySQL5Dialect</property>
Run Code Online (Sandbox Code Playgroud)
什么是实际的属性名称?Hibernate.dialect还是只有方言?什么可能的财产价值?
我正在添加更多信息
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
Run Code Online (Sandbox Code Playgroud)
如下面的答案所示.
我甚至没有构建任何代码只是尝试创建简单的配置:
Configuration cfg = new Configuration().addClass(Employee.class);
sessionFactory = cfg.buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
下面是实际的配置文件
<?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>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root1234</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<!-- Mapping files will go here.... -->
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
我怀疑没有找到hibernate.cfg.xml?我把它放在同一个包中,Employee.class的源代码就在那里.实际上移动这个文件导致相同的错误,所以它实际上没有找到:-(在哪里保留它?这是一个独立的测试程序:-(
您的第一行或第二行应该有效.第二种方式,只是"方言"是Hibernate参考中显示的方式.如果您仍然收到该错误,则表示您可能还有其他问题.你是如何构建SessionFactory的?你确定它找到你的hibernate.cfg.xml吗?
编辑:根据您的更新,您没有告诉Hibernate从配置文件配置自己.您正在构建自己的配置并使用它.你需要选择一个或另一个.要么以编程方式执行,要么通过XML执行.
我也遇到了同样的问题早些时候我的代码是:
private final static SessionFactory factory = new Configuration()
.configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
现在我把它改成了
private final static SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml").buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
并且错误消失了.我认为默认它只查找hibernate.properties文件.
| 归档时间: |
|
| 查看次数: |
50874 次 |
| 最近记录: |