我以这种方式构建我的HibernateUtil:
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml) config file.
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
因此,当我尝试在Eclipse(使用Hibernate Tools)的HQL编辑器中执行HQL命令时,会出现以下错误: 为什么会这样?它不会通过ConfigureAnnotation更改AnnotationConfiguration?
更新
<?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.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password"><password></property>
<property name="hibernate.connection.url">jdbc:mysql://<hostname>:3306/<schema></property>
<property name="hibernate.connection.username">root</property>
<!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- SQL -->
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">true</property>
<!-- C3P0 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<!-- Classes -->
<mapping class="com.suaparte.pojo.Area" />
</session-factory>
</hibernate-configuration>
提前致谢。
答案 0 :(得分:12)
如果您有错误, 并且您使用的是hibernate版本&gt; = 4.0,问题可能出在Hibernate Console配置中。
尝试去:
运行 - &gt;运行配置
并打开您创建的配置,在主选项卡上将Type从Core更改为Annotations。这是一个截图:
答案 1 :(得分:7)
只需将Configuration()更改为AnnotationConfiguration()
即可答案 2 :(得分:3)
我已从
更改了我的代码Configuration cfg=new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory factory=cfg.buildSessionFactory();
到
SessionFactory factory=new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
我还没有添加&#34; @ Id&#34;我的POJO课程中的注释。添加&#34; @ Id&#34;我完全解决了我的问题。
答案 3 :(得分:2)
尝试构建:
AnnotationConfiguration().configure().buildSessionFactory();
为此,你需要这个:
Hibernate annotations
问候。
乌
答案 4 :(得分:2)
您可以使用AnnotationConfiguration()而不是Configuration()
答案 5 :(得分:2)
尝试下载hibernate distribution jars 3.6.4版本,使用jre1.6.0_07版本。
通过这样做,您可以成功创建新配置对象,而不是使用AnnotationConfiguration()
。
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
答案 6 :(得分:1)
尝试将Configuration()。configure()。buildSessionFactory()更改为AnnotationConfiguration()。configure()。buildSessionFactory()并在类路径中包含hibernate-annotations.jar
答案 7 :(得分:0)
AnnotationConfiguration configuration=new AnnotationConfiguration();
configuration.configure("hibernate.cfg.xml");
SessionFactory factory=configuration.buildSessionFactory();
Session session=factory.openSession();
答案 8 :(得分:-1)
创建一个返回SessionFactory
对象的实用程序类:
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
catch(Throwable t) {
throw new ExceptionInInitializerError(t);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void shutdown() {
getSessionFactory().close();
}
}
并在你的主类中调用它:
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.getCurrentSession();