2016-01-04 2 views
1

Я учусь в спящем режиме 4, но застрял в создании сессии Factory и просмотрите мой код и помочь мне выяснить причину проблемы, как я использую спящий режим-ядра 5.0. 6, разъем MySQL 5.0.8, 1.2.17 log4j, JTA банка, dom4j и JBoss каротаж банка, и это мой код сеанс заводаНевозможно создать сеанс завод в Hibernate

class HibernateUtill 
{ 

    private static final SessionFactory sessionFactory; 
     static { 
      try { 
       Logger logger = Logger.getLogger("Mylogger"); 
       logger.info("Trying to create a test connection with database"); 
       Configuration configuration = new Configuration().configure(); 
       configuration.configure(); 
       StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration 
         .getProperties()); 
       sessionFactory = configuration.buildSessionFactory(builder.build()); 
      } catch (Throwable ex) { 
       System.out.println("SessionFactory creation failed with error" + ex); 
       throw new ExceptionInInitializerError(ex); 
      } 

     } 

     public static SessionFactory getSessionFactory() { 
      return sessionFactory; 

     } 

     public static void shutDown() { 
      sessionFactory.close(); 
     } 
} 

и ошибки я получаю это:

log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
SessionFactory creation failed with errororg.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml] 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.commonClasses.HibernateUtil.<clinit>(HibernateUtil.java:19) 
    at com.java.save.SavingObject.savingObject(SavingObject.java:13) 
    at com.java.save.SavingObject.main(SavingObject.java:31) 
Caused by: org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml] 
    at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:53) 
    at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:163) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:259) 
    at com.commonClasses.HibernateUtil.<clinit>(HibernateUtil.java:12) 
    ... 2 more 

или простыми словами errororg.hibernate.internal.util.config.ConfigurationException: Не удалось найти cfg.xml ресурсу

То, что я знаю, это ошибка из-за log4j и я поместил log4j.properties в папку Src и код для файл собственности

# Root logger option 
log4j.rootlogger=INFO,stdout 

#Direct log messages to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

#log JDBC bind parameter runtime arguments 
log4j.logger.org.hibernate.type=trace 

, пожалуйста, помогите мне решить эту ошибку и вызвать эту ошибку. любая помощь с благодарностью, Thanks.

+1

кажется, что баночка отсутствует или разные версии этого (JBoss-лесозаготовительной-3.1.0.CR1.jar) HTTP: // stackoverflow.com/questions/12615566/java-noclassdeffound-error – pL4Gu33

+0

да теперь я получил это, я отсутствовал jboss-logging, dom4j и jta jar, но теперь я застрял с другим сообщением ** Не удалось найти ресурс cfg.xml ** – emotionlessbananas

ответ

1

Вам нужно создать hibernate.cfg.xml как:

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/yourDB</property> 
    <property name="hibernate.connection.characterEncoding">UTF-8</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.current_session_context_class">thread</property> 
     <property name="hibernate.connection.CharSet">utf8</property> 
     <property name="hibernate.connection.characterEncoding">utf8</property> 
     <property name="hibernate.connection.useUnicode">true</property> 

     <!-- DB schema will be updated if needed --> 
    <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration> 

Добавить следующий код в ваш servlet.xml

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${database.driver}" /> 
    <property name="url" value="${database.url}" /> 
    <property name="username" value="${database.user}" /> 
    <property name="password" value="${database.password}" /> 
</bean> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
</bean> 

И создать .properties файл со следующим кодом

database.driver=com.mysql.jdbc.Driver 
database.url=jdbc:mysql://localhost:3306/yourDB 
database.user=user 
database.password=password 
hibernate.show_sql=true 

После этого вы можете создать гибернации сессию следующего кода

Session session = null; 
    session = sessionFactory.openSession(); 
    String query = "select users.username, users.password, users.name, users.enabled, users.surname, users.email, users.gender, users.age, users.weight, users.height, users.sport, users.place, users.photo from users where users.username LIKE '%s'"; 
    List<Users> userInfoList = session.createSQLQuery(String.format(query, username)).addEntity(Users.class).list(); 
    session.close(); 
    session = null; 
0

Попробуйте это.

Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml")); 
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder(); 
serviceRegistryBuilder.applySettings(configuration.getProperties()); 
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 
sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
+0

, может у вас объяснить, как этот код будет работать? – emotionlessbananas

+0

В вашем коде вы не передали файл .cfg.xml, который содержит сведения о соединении с БД. –

2

Вам не хватает файла конфигурации hibernate в вашем пути к классу. Это можно назвать объявлением cfg.xml. Ниже приведен пример файла конфигурации. настройте эти элементы для своей БД и поместите это в путь класса.

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:3306/hibernatetrial?createDatabaseIfNotExist=true</property> 
     <property name="hibernate.connection.username">username</property> 
     <property name="hibernate.connection.password">password</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="show_sql">false</property> 
     <property name="format_sql">true</property> 
     <property name="hbm2ddl.auto">update </property> 
     <mapping resource="hibernatemapping/mapping.xml"/> 

    </session-factory> 
</hibernate-configuration> 
+0

теперь я получил его, изменив подход, как ** sessionFactory = new Configuration(). Configure ("configration.cfg.xml"). AddResource ("Employee.hbm.xml"). BuildSessionFactory(); ** – emotionlessbananas

+0

, но теперь, если я использую тот же подход для двух ** xxx.hbm.xml ** его не работает вы можете мне помочь в этом, и одна вещь, я работаю с Java-кодом, а не с сервлетом или jsp/spring, и никаких комментариев нет – emotionlessbananas

+0

Проверьте, есть ли файл конфигурации в пути к классу. Может ли контейнер загружать этот файл? – BValluri

Смежные вопросы