Hibernate n'enregistre pas et ne lance pas des exceptions?

Je suis coincé avec ce déjà depuis quelques semaines et je n'ai pas la moindre idée de ce qui va mal. Je suis assez désespérée car j'ai perdu beaucoup de temps déjà

- Je utiliser le modèle de données décrit ci-dessous (MySQL). J'ai créé le hbm.xml et des classes java par reverse engeneering (Eclipse/JBoss Tools) (voir l'exemple ci-dessous).

Lorsque j'essaie d'enregistrer des tweets, des mots ou des événements que je peux voir dans le journal des messages que les valeurs de clé primaire sont générés, et que les paramètres sont tenus correctement, mais rien n'est jamais écrit à la base de données. (Voir le message du journal à la fin du post)

Mais la chose la plus étrange est que les objets que j'ai enregistrer pour le event_has_words table sont stockées parfaitement (avec l'id généré à partir de la parole et de la table des événements)!?!?! Et avant tout sans exception est lancée!?!

Des idées? Je suis fou!

Cordialement,

Jean

Et voici une cartographie qui ne fonctionne pas:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="de.brotkasting.buki.cep.data.hibernate.entities.Event" table="event" catalog="cep1">
        <id name="pkEventsId" type="java.lang.Integer">
            <column name="PK_Events_Id" />
            <generator class="identity" />
        </id>
        <many-to-one name="sourceSystems" class="de.brotkasting.buki.cep.data.hibernate.entities.SourceSystems" fetch="select">
            <column name="SourceSystems_PK_SourceSystems_Id" not-null="true" />
        </many-to-one>
        <many-to-one name="tweets" class="de.brotkasting.buki.cep.data.hibernate.entities.Tweets" fetch="select">
            <column name="Tweets_pk_tweet_id" not-null="true" />
        </many-to-one>
        <property name="systemTimeStamp" type="timestamp">
            <column name="System_Time_Stamp" length="19" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

et la fonction de la classe:

    package de.brotkasting.buki.cep.data.hibernate.entities;
//Generated 28.04.2009 21:24:54 by Hibernate Tools 3.2.4.GA
@Entity
@Table(name = "event", catalog = "cep1")
public class Event implements java.io.Serializable {
/**
* 
*/
private static final long serialVersionUID = 3530010885697280401L;
private Integer pkEventsId;
private SourceSystems sourceSystems;
private Tweets tweets;
private Date systemTimeStamp;
public Event() {
}
public Event(SourceSystems sourceSystems, Tweets tweets,
Date systemTimeStamp) {
this.sourceSystems = sourceSystems;
this.tweets = tweets;
this.systemTimeStamp = systemTimeStamp;
}
@Id
@Column(name = "PK_Events_Id", unique = true, nullable = false)
public Integer getPkEventsId() {
return this.pkEventsId;
}
public void setPkEventsId(Integer pkEventsId) {
this.pkEventsId = pkEventsId;
}
@JoinColumn(name = "SourceSystems_PK_SourceSystems_Id", nullable = false)
public SourceSystems getSourceSystems() {
return this.sourceSystems;
}
public void setSourceSystems(SourceSystems sourceSystems) {
this.sourceSystems = sourceSystems;
}
@JoinColumn(name = "Tweets_pk_tweet_id", nullable = false)
public Tweets getTweets() {
return this.tweets;
}
public void setTweets(Tweets tweets) {
this.tweets = tweets;
}
//@Temporal(TemporalType.TIMESTAMP)
@Column(name = "System_Time_Stamp", nullable = false, length = 19)
public Date getSystemTimeStamp() {
return this.systemTimeStamp;
}
public void setSystemTimeStamp(Date systemTimeStamp) {
this.systemTimeStamp = systemTimeStamp;
}
}

et la classe de persiste

public class TweetPersistence extends HibernateBase {
private static int batchCounter = 0;    
private static void store(Object object) throws HibernateException
{
try {
if(session == null)
{
session = sessionFactory.openSession();             
}
if(!session.isOpen())
{
session = sessionFactory.openSession();
}
session.save(object);
LoggingConfigurator.getInstance().info("Objekt:" +object);
//flush cache every 20 saved entities
//if(batchCounter%20 == 0)
//{
session.flush();
session.clear();
//} 
//increment batchCounter
batchCounter++;
} catch (HibernateException e) {
e.printStackTrace(System.out);
} 
}
public static void storeTweet(Tweets tweet) {
try {
if (tweet != null) {
store(tweet);
}
} catch (HibernateException e) {
e.printStackTrace(System.out);
}       
}
}

et dans le journal, je peux voir que les id sont générés correctement


- generated identifier: component[eventsPkEventsId,wordsPkWordListId,position]{position=128, wordsPkWordListId=128, eventsPkEventsId=56}

  • Peut-être que vous devriez poster Hibernate mapping sont utilisés, puisque le problème est peut être là.