-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: [HELP] Drole d'Element pour 1 requete DOM avec composite-id
PostPosted: Wed Sep 20, 2006 9:32 am 
Newbie

Joined: Fri Aug 18, 2006 10:13 am
Posts: 10
Hibernate version:
3.2 cr4

Mapping documents:
<?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 package="wpi.metier">
<class name="Contrat" node="r">
<composite-id class="ContratPK" mapped="true">
<key-property name="id" type="string" node="id"/>
<key-property name="code" type="string" node="code"/>
<key-property name="validite" type="string" node="validite"/>
</composite-id>
<property name="client" type="string" node="client"/>
<property name="contrat" type="string" node="contrat"/>
<property name="contact" type="string" node="contact"/>
<property name="famFile" type="string" node="famFile"/>
<property name="famUrl" type="string" node="famUrl"/>
</class>
</hibernate-mapping>

Code between sessionFactory.openSession() and session.close():
/**
* @return
*/
public int update() {
int n=0;

/* Initialisation d'Hibernate pour le mapping DOM vers JAVA */
Session session = HibernateUtil.getSessionFactory().openSession();

Session dom4jSession = session.getSession(EntityMode.DOM4J);
Session pojoSession = session.getSession(EntityMode.POJO);

Transaction transaction = session.beginTransaction();

/* Persistance de l'objet dans la session POJO */
pojoSession.merge("wpi.metier.Contrat",contrat );
pojoSession.flush();

try {
/* Lecture du document avec DOM4J */
String xmlfile= this.getRequest().getSession(false).getServletContext().getRealPath("/") + "ressources" + java.io.File.separator + "xml" + java.io.File.separator + "wpi-contrats.xml";

SAXReader saxReader = new SAXReader();
Document xmldb = saxReader.read(xmlfile);

Node toRemove = (Node) xmldb.selectSingleNode("//r[id=\"" + this.contrat.getId() + "\" and validite=\"" + this.contrat.getValidite() + "\"]");

if (toRemove != null) {
/* Récuperation de l'objet persisté dans un element DOM */
Query requete = dom4jSession.createQuery( "from Contrat as contrat where contrat.id.id = ? and contrat.id.code = ? and contrat.id.validite = ?");
requete.setString(0, contrat.getId());
requete.setString(1, contrat.getCode());
requete.setString(2, contrat.getValidite());

Element element = (Element) requete.uniqueResult();
System.out.println(element.asXML());

if (element != null) {
/* Suppression et creation respectivement de l'ancien et du nouvel element */
boolean isRemove = toRemove.getParent().remove(toRemove);

if (isRemove) {
/* Ajout du neud */
xmldb.getRootElement().add(element);

/* Ecriture physique du fichier */
XMLWriter writer = new XMLWriter(new FileWriter(xmlfile));
writer.write( xmldb );
writer.close();
}

transaction.commit();
session.close();
/* Compteur de mise à jour */
if (isRemove) {
n++;
}
} else {
/* Rollback */
transaction.rollback();
session.close();
}
}
} catch (Exception e) {
e.printStackTrace ();

/* Rollback */
transaction.rollback();
session.close();
}
return n;
}

Full stack trace of any exception that occurs:
Pas d'exception

Name and version of the database you are using:
HSQLDB

The generated SQL (show_sql=true):
select
contrat0_.id as id1_,
contrat0_.code as code1_,
contrat0_.validite as validite1_,
contrat0_.client as client1_,
contrat0_.contrat as contrat1_,
contrat0_.contact as contact1_,
contrat0_.famFile as famFile1_,
contrat0_.famUrl as famUrl1_
from
Contrat contrat0_
where
contrat0_.id=?
and contrat0_.code=?
and contrat0_.validite=?

Le probleme:

L'element que j'obtiens pour ma requete est incorrecte ;-(

from Contrat as contrat where contrat.id.id = ? and contrat.id.code = ? and contrat.id.validite = ?

<r><id><id>RETENO</id><code>CL0001</code><validite>2002-02-23</validite></id><client>TRANSICIEL</client><contrat>RIB00/09/BRAH</contrat><contact>Yves DELNATTE</contact><famFile>RETENO-CL0001.dot</famFile><famUrl></famUrl></r>

La sequence suivante ne correspond pas à mon mapping, si ?
<id>
<id>XXX</id>
<code>XXXX</code>
<validite>0001-01-01</validite>
</id>


Que puis-je ou dois-je faire pour otenir un element correcte ?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.