Хорошо, я сдаюсь, мне нужна ваша помощь.java.lang.NoSuchFieldError: namingStrategy
Обучение спящего режима. Теперь есть пример из того, как использовать аннотации в 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
}
}
Спасибо! Я попробую, но я сделал это только потому, что это было в примере. Поэтому я не знаю, если это правильно. – Kleeo
Да, безусловно. Попробуйте, и если вы найдете это полезным для вас, тогда проголосуйте за ответ, чтобы другие люди также могли получить от него какую-то помощь. – Rish