好的,我放弃了,我需要你的帮助。
学习Hibernate。现在有一个例子来自如何在Hibernate中使用注释(在此之前我已经在同一个例子上工作,但它使用.xml而不是。而且我已经成功地使它无需工作例外)。 所以现在我有了
Initial session factory creation failedjava.lang.NoSuchFieldError: namingStrategy
Exception in thread "main" java.lang.ExceptionInInitializerError
at firstproject.HibernateUtil.<clinit>(HibernateUtil.java:14)
at firstproject.StudentDAO.addSubject(StudentDAO.java:82)
at firstproject.Test.main(Test.java:12)
Caused by: java.lang.NoSuchFieldError: namingStrategy
at org.hibernate.cfg.AnnotationConfiguration.reset(AnnotationConfiguration.java:250)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:125)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:119)
at org.hibernate.cfg.AnnotationConfiguration.<init>(AnnotationConfiguration.java:108)
at firstproject.HibernateUtil.<clinit>(HibernateUtil.java:11)
... 2 more
以下是一些可能有帮助的代码
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();//HibernateUtil.java:11
} catch (Throwable ex) {
System.err.println("Initial session factory creation failed" + ex);
throw new ExceptionInInitializerError(ex);//HibernateUtil.java:14
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
public class StudentDAO{
public Long addSubject(Subject subject) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();//StudentDAO.java:82
session.beginTransaction();
Long result = (Long) session.save(subject);
session.getTransaction().commit();
return result;
}
}
public class Test {
public static void main(String[] args) {
StudentDAO dao = new StudentDAO();
Subject subject = new Subject();
subject.setSubjectName("Mathematics");
dao.addSubject(subject);//Test.java:12
}
}
答案 0 :(得分:4)
嗨Kleeo
您已在 HibernateUtil
类中撰写以下内容。
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
将此行代码替换为以下写入的行&amp;重试。我希望这对你有用。
sessionFactory = new Configuration().configure().buildSessionFactory();
答案 1 :(得分:2)
AnnotationConfiguration已在Hibernate 3.6中弃用。
正如您在文档中看到的那样(请参阅下面的链接),所有功能都已移至配置。
您可以安全地使用配置。
sessionFactory = new Configuration().configure().buildSessionFactory();
AnnotationConfiguration文档:
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/cfg/AnnotationConfiguration.html
答案 2 :(得分:0)
在下面使用: sessionFactory = new Configuration()。configure()。buildSessionFactory();
还要确保您的cfg.xml应该出现在src文件夹的根目录中。否则,您将获得无法找到cfg文件的异常