Hibernate " hbm2ddl.auto' de la propriété avec la valeur "créer" n'est pas re-création de la table

Je travaille sur mon d'abord simple d'applications Hibernate. Le noeud du problème est, que j'avais renommé un membre de la classe persistante (avec apt changements à toutes les autres parties) et de ré-exécuter l'application. Comme " hbm2ddl.auto", le bien est attribué à "créer" de la valeur dans la configuration xml, Hibernate est prévu de créer un nouveau tableau sur chaque course, mais ça ne le fait pas. Voici des informations détaillées:

CLASSE:

    public class Event {
    private Long id;

    private String title;
    private Date date;

    public Event() {
        //this form used by Hibernate
    }

    public Event(String title, Date date) {
        //for application use, to create new events
        this.title = title;
        this.date = date;
    }

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

Event.hbm.xml:

<hibernate-mapping package="org.hibernate.tutorial.hbm">

<class name="Event" table="EVENTS">
    <id name="id" column="EVENT_ID">
        <generator class="increment"/>
    </id>
    <property name="date" type="timestamp" column="EVENT_DATE"/>
    <property name="title"/>
</class>

hibernate.cfg.xml, entre autres, a d'entrée suivantes:

<property name="hbm2ddl.auto">create</property>

CLASSE PRINCIPALE:

public class EventManager {

public static void main(String[] args) {

    EventManager mgr = new EventManager();

    List events = mgr.listEvents();
for (int i = 0; i < events.size(); i++) {
    Event theEvent = (Event) events.get(i);
        System.out.println( "Event: " + theEvent.getTitle() + " Time: " + theEvent.getDate() );
    }

    HibernateUtil.getSessionFactory().close();

}

private List listEvents() {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List result = session.createQuery("from Event").list();
    session.getTransaction().commit();
    return result;
} }

Le code ci-dessus fonctionne comme prévu. Juste pour tester 'hbm2ddl.auto, j'avais changé le titre de " membre de la classe Event 'title1'. Et, mis à jour setter et getter méthodes et toutes les références (dans le mappage xml, des Événements et des EventManager classe). Respecté aucune erreur. Mais, quand j'essaye d'exécuter l'application, je vois exception suivante:

Exception in thread "main" org.mise en veille prolongée.exception à la règle.SQLGrammarException: Unknown column 'event0_.title1' in 'field list'
au org.mise en veille prolongée.exception à la règle.interne.SQLExceptionTypeDelegate.convertir(SQLExceptionTypeDelegate.java:82)
au org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
au org.mise en veille prolongée.moteur.jdbc.le spi.SqlExceptionHelper.convertir(SqlExceptionHelper.java:125)
au org.mise en veille prolongée.moteur.jdbc.le spi.SqlExceptionHelper.convertir(SqlExceptionHelper.java:110)
au org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
au org.mise en veille prolongée.moteur.jdbc.interne.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
à $Proxy6.executeQuery(Source Inconnue)
au org.mise en veille prolongée.loader.Loader.getResultSet(Loader.java:1953)
au org.mise en veille prolongée.loader.Loader.doQuery(Loader.java:829)
au org.mise en veille prolongée.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
au org.mise en veille prolongée.loader.Loader.doList(Loader.java:2438)
au org.mise en veille prolongée.loader.Loader.doList(Loader.java:2424)
au org.mise en veille prolongée.loader.Loader.listIgnoreQueryCache(Loader.java:2254)
au org.mise en veille prolongée.loader.Loader.liste(Loader.java:2249)
au org.mise en veille prolongée.loader.hql.QueryLoader.liste(QueryLoader.java:470)
au org.mise en veille prolongée.hql.interne.ast.QueryTranslatorImpl.liste(QueryTranslatorImpl.java:355)
au org.mise en veille prolongée.moteur.de la requête.le spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
au org.mise en veille prolongée.interne.SessionImpl.liste(SessionImpl.java:1248)
au org.mise en veille prolongée.interne.QueryImpl.liste(QueryImpl.java:101)
au org.mise en veille prolongée.didacticiel.hbm.EventManager.listEvents(EventManager.java:56)
au org.mise en veille prolongée.didacticiel.hbm.EventManager.principale(EventManager.java:20)
Causés par: com.mysql.jdbc.des exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'event0_.title1' in 'field list'
au coucher du soleil.de réfléchir.NativeConstructorAccessorImpl.newInstance0(Native method)
au coucher du soleil.de réfléchir.NativeConstructorAccessorImpl.newInstance(Source Inconnue)
au coucher du soleil.de réfléchir.DelegatingConstructorAccessorImpl.newInstance(Source Inconnue)
à java.lang.de réfléchir.Constructeur.newInstance(Source Inconnue)
au com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
au com.mysql.jdbc.Util.getInstance(Util.java:384)
au com.mysql.jdbc.La fonction SQLError.createSQLException(SQLError.java:1054)
au com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562)
au com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494)
au com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960)
au com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
au com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696)
au com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2105)
au com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2264)
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke0(Native method)
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke(Source Inconnue)
au coucher du soleil.de réfléchir.DelegatingMethodAccessorImpl.invoke(Source Inconnue)
à java.lang.de réfléchir.La méthode.invoke(Source Inconnue)
au org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 16 plus

De l'erreur de pointage de classe EventManager à la ligne suivante:

List result = session.createQuery("from Event").list();

Comme " hbm2ddl.auto", le bien est attribué à "créer" de la valeur dans la configuration xml, Hibernate est prévu de créer un nouveau tableau sur chaque course, mais ça ne le fait pas. S'il vous plaît aider à résoudre le problème.

Merci d'avance.

OriginalL'auteur user1418717 | 2012-05-28