проблема спящего соединения - PullRequest
0 голосов
/ 22 мая 2011

Я установил плагин hibernate для NetBeans и не могу подключиться к базе данных MySQL - код:

package client;

import org.hibernate.*;
import org.hibernate.cfg.*;
import java.util.*;

public class HiberTest {

  private static SessionFactory sessionFactory;

  private int id;

  public int getId() {
    return this.id;
  }

  public void setId(int id) {
    this.id = id;
  }

  protected static void setUp() throws Exception {
      // A SessionFactory is set up once for an application
      sessionFactory = new Configuration()
              .configure() // configures settings from hibernate.cfg.xml
              .buildSessionFactory();
  }

  public static void main(String[] args) throws Exception {
    setUp();
    Session session = HibernateUtils.getSessionFactory().openSession();
    session.beginTransaction();
    Query q = session.createQuery("CREATE TABLE test(myInt int not null)");
        List resultList = q.list();
        System.out.println(resultList);
        session.getTransaction().commit();
        session.close();
  }

}

HibernateUtils.class

package client;

import org.hibernate.cfg.*;
import org.hibernate.SessionFactory;

public class HibernateUtils {

    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}

Ошибки:

May 22, 2011 12:40:33 PM org.hibernate.hql.ast.ErrorCounter reportError
SEVERE: line 1:1: unexpected token: CREATE
Exception in thread "main" java.lang.IllegalArgumentException: node to traverse cannot be null!
        at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:31)
        at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:254)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
        at client.HiberTest.main(HiberTest.java:36)
Java Result: 1

Пожалуйста, помогите мне с этим, что является препятствием для меня, чтобы иметь дело с гибернацией. После всех изменений cfg я решил опубликовать cfg.xml и hbm.xml, может быть, кто-то предложит что-то здесь: cfg.xml

<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://myhost:3306/wwwgeeksearthcom_geeksearth_test</property>
    <property name="hibernate.connection.username">user_name</property>
    <property name="hibernate.connection.password">**********</property>
    <property name="hibernate.show_sql">true</property>
    <!--<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTransactionFactory</property>-->
    <mapping resource="hibernate.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

и hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="HiberTest" table="guests">
  <id name="id" column="g_id">
      <generator class="native"/>
  </id>
</class>
</hibernate-mapping>

Ответы [ 2 ]

1 голос
/ 22 мая 2011

в журнале уже сказано, что <class> внутри файла сопоставления hibernate.hbm.xml неправильно отформатирован из-за следующей ошибки:

Содержимое элемента типа "класс" неполное, онодолжен соответствовать "(мета *, подвыбрать?, кеш?", синхронизировать *, комментарий?, tuplizer *, (id | составной-идентификатор), дискриминатор?, естественный-идентификатор?, (версия | отметка времени)?, (свойство | много-к-одному | один-к-одному | компонент | динамическая составляющая | свойства | любой | Карта | набор | список | сумка | idbag | массив | примитивно-массив) ((присоединиться , подкласс *)| join-subclass * | union-subclass *), загрузчик?, sql-insert?, sql-update?, sql-delete?, filter *, resultset *, (query | sql-query) *) "

Это сообщение об ошибке означает, что вы нарушаете некоторые требования <class>, например:

  • Он может содержать только дочерние элементы, перечисленные в скобках
  • Знак * означает, что дочерний элемент может встречаться ноль или более раз.
  • ?Знак означает, что дочерний элемент может встречаться ноль или один раз.
  • Без каких-либо * и?признак того, что дочерний элемент должен быть включен и включен только один раз (например, id)

Вы можете обратиться к this , чтобы узнать, как читать синтаксис элементов DTD.

0 голосов
/ 22 мая 2011

вы должны использовать для .xml файла check xml и validate xml, так как это меню доступно с netbeans, просто щелкните правой кнопкой мыши на XML и выберите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...