hi oleg,
i'd like to see the log too!! but i cant unfortunately find it. :(
anyhow here are my mapping files.
note when i do : "select c from estore.Commande c" i dont get any Commande
: NullPointerException caused by the fact that the produit that is bundled
in LigneDeCommande is not loaded from db : could it be the same prob? (more
exactly if i catch the exception in the method that throw it, in class
LigneDeCommande, i then can get all the Commandes (but Produits associated
with em via the usse of the association class LigneDeCommande are null).
thx very much for ur time.
<!-- database.xml -->
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor JDO Configuration DTD Version
1.0//EN" "http://castor.exolab.org/jdo-conf.dtd">
<database name="castor" engine="mysql">
<driver class-name="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://leger-paqueret/castor">
<param name="user" value="rhill" />
<param name="password" value="rhill" />
</driver>
<mapping href="mapping.xml" />
</database>
<!-- mapping.xml -->
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<key-generator name="HIGH/LOW" alias="keygen">
<param name="table" value="key_table"/>
<param name="key-column" value="table_name"/>
<param name="value-column" value="id"/>
</key-generator>
<include href="client.xml"/>
<include href="produit.xml"/>
<include href="commande.xml"/>
</mapping>
<!-- client.xml -->
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<!-- CLIENT MAPPING DEF -->
<class name="estore.Client" identity="id" key-generator="keygen"
access="db-locked">
<cache-type type="count-limited" capacity="10000" />
<description>Client Definition</description>
<map-to table="client" xml="client" />
<field name="id" type="integer" >
<sql name="id"/>
<!--<sql name="id" type="integer"/>
<xml node="attribute"/>-->
</field>
<field name="nom" type="string">
<sql name="nom" type="varchar" dirty="check" />
<xml node="text" />
</field>
<field name="age" type="integer" >
<sql name="age" type="integer"/>
<xml node="element"/>
</field>
<!-- client-to-cmd relationship -->
<field name="commandes" type="estore.Commande" required="false"
collection="vector">
<sql many-key="client_id"/>
<xml name="commandes" node="element" />
</field>
<!-- end client-to-cmd -->
</class>
<!-- END CLIENT MAPPING DEF -->
</mapping>
<!-- produit.xml -->
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<!-- _ABSTRACT_ PRODUIT MAPPING DEF -->
<class name="estore.Produit" identity="id" key-generator="keygen"
access="db-locked">
<cache-type type="count-limited" capacity="10000" />
<description>Abstract Produit Definition</description>
<map-to table="produit" xml="produit" />
<field name="id" type="integer">
<sql name="id" type="integer" />
<xml name="id" node="attribute"/>
</field>
<field name="description" type="string">
<sql name="description" type="varchar" />
<xml name="description" node="element" />
</field>
<field name="prix" type="double">
<sql name="prix" type="double" />
<xml name="prix" node="element" />
</field>
<!-- many-to-many produitpromotionnel-to-produit relationship def -->
<field name="parents" type="estore.ProduitPromotionnel"
required="false" collection="vector">
<!--sql name="promo_id" many-table="promo_prod" many-key="produit_id"
/-->
<sql name="promo_id" many-key="produit_id" many-table="promo_prod"/>
<xml name="parents" node="element" />
</field>
<!-- end many-to-many produitpromotionnel-to-produit relationship def
-->
<!-- one-to-many prd-to-ldc -->
<field name="ldc" type="estore.LigneDeCommande" required="false"
collection="vector">
<sql many-key="prd_id"/>
<xml name="ldc" node="element" />
</field>
<!-- end one-to-many ldc-to-prd -->
</class>
<!-- END PRODUIT MAPPING DEF -->
<!-- BASICPRODUIT MAPPING DEF -->
<class name="estore.BasicProduit"
identity="id"
extends="estore.Produit"
access="db-locked">
<cache-type type="count-limited" capacity="10000" />
<field name="id" type="integer">
<sql name="id" type="integer" />
<xml name="id" node="attribute"/>
</field>
<map-to table="basic_produit" xml="basicProduit" />
<field name="marque" type="string">
<sql name="marque" type="varchar" />
<xml name="marque" node="element" />
</field>
</class>
<!-- END BASICPRODUIT MAPPING DEF -->
<!-- PRODUITPROMOTIONNEL MAPPING DEF -->
<class name="estore.ProduitPromotionnel"
identity="id"
extends="estore.Produit"
access="db-locked">
<cache-type type="count-limited" capacity="10000" />
<map-to table="produit_promotionnel" xml="produitPromotionnel" />
<field name="id" type="integer">
<sql name="id" type="integer" />
<xml name="id" node="attribute"/>
</field>
<field name="finPromo" type="java.util.Date">
<sql name="date_fin" type="date" />
<xml name="dateFin" node="element" />
</field>
<!-- many-to-many produitpromotionnel-to-produit relationship def -->
<field name="embeddedProduits" type="estore.Produit"
required="true" collection="vector">
<!--sql name="produit_id" many_table="promo_prod"
many-key="promo_id"/-->
<sql name="produit_id" many-key="promo_id" many-table="promo_prod"/>
<xml name="embeddedProduits" node="element" />
</field>
<!-- end many-to-many produitpromotionnel-to-produit relationship def
-->
</class>
<!-- END PRODUITPROMOTIONNEL MAPPING DEF -->
</mapping>
<!-- commande.xml -->
<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<!-- COMMANDE MAPPING DEFINITION -->
<class name="estore.Commande" identity="id"
key-generator="keygen" access="db-locked" >
<cache-type type="count-limited" capacity="10000" />
<map-to table="commande" xml="Commande" />
<field name="id" type="integer">
<sql name="id" type="integer" />
<xml name="id" node="attribute"/>
</field>
<field name="total" type="double">
<sql name="total" type="double" />
<xml name="total" node="element" />
</field>
<field name="client" type="estore.Client">
<sql name="client_id" />
<xml name="client" node="element" />
</field>
<!-- one-to-many commande-to-lignedecommande relationship def -->
<field name="lignesDeCommandeList" type="estore.LigneDeCommande"
required="false" collection="vector">
<sql many-key="cmd_id"/>
<xml name="lignesDeCommande" node="element" />
</field>
<!-- end one-to-many commande-to-lignedecommande relationship def -->
</class>
<!-- END COMMANDE MAPPING DEFINITION -->
<!-- LIGNEDECOMMANDE MAPPING DEF -->
<class name="estore.LigneDeCommande" identity="id" access="db-locked"
key-generator="keygen" depends="estore.Commande" >
<cache-type type="count-limited" capacity="10000" />
<map-to table="ligne_de_commande" xml="LigneDeCommande" />
<field name="id" type="integer">
<sql name="id" type="integer" />
<xml name="id" node="attribute"/>
</field>
<field name="quantite" type="integer">
<sql name="quantite" type="integer" />
<xml name="quantite" node="element" />
</field>
<field name="total" type="double">
<sql name="total" type="double" />
<xml name="total" node="element" />
</field>
<!-- one-to-many commande-to-lignedecommande relationship def -->
<field name="cmd" type="estore.Commande">
<sql name="cmd_id"/>
<xml name="cmdId" node="element"/>
</field>
<!-- end one-to-many commande-to-lignedecommande relationship def -->
<!-- one-to-many prd-to-ldc relationship def -->
<field name="prd" type="estore.Produit">
<sql name="prd_id" />
<xml name="prdId" node="element"/>
</field>
<!-- end one-to-many prd-to-ldc relationship def -->
</class>
<!-- END LIGNEDECOMMANDE MAPPING DEF -->
</mapping>
>From: Oleg Nitz <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: [EMAIL PROTECTED]
>Subject: Re: [castor-dev] Simple OQL ... ?
>Date: Mon, 6 Aug 2001 12:15:13 +0300
>
>Hi Gilles,
>
>First, I'd like to see the Castor log where the full SQL statements
>are seen.
>Second, I'd like to see your mapping.xml
>
>Oleg
>
>gilles dodinet wrote:
> > hi oleg,
>
> > thanks for your help, it works better now : no probs when loading
>clients
> > ("select c from Client c") ; but i got another exception when trying to
>get
> > the products ("select c from Produit c"). i can't retrieve the exact sql
> > error ("PersistenceException nested error : [..]"). here's the
>StackTrace :
>
> > java.sql.SQLException: Syntax error or access violation: You have an
>error
> > in your SQL syntax near 'null promo_prod ON
> > produit_promotionnel.id=promo_prod.promo_id,produit WHERE pro' at line 1
> > at org.gjt.mm.mysql.MysqlIO.sendCommand(MysqlIO.java:497)
> > at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect(MysqlIO.java:550)
> > at org.gjt.mm.mysql.Connection.execSQL(Connection.java:885)
> > at
> >
>org.gjt.mm.mysql.PreparedStatement.executeQuery(PreparedStatement.java:288)
> > at
>org.exolab.castor.jdo.engine.SQLEngine.load(SQLEngine.java:1008)
> > at
>org.exolab.castor.persist.ClassMolder.load(ClassMolder.java:646)
> > at
>org.exolab.castor.persist.LockEngine.load(LockEngine.java:361)
> > at
> >
>org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:545)
> > at
> >
>org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:479)
> > at
>org.exolab.castor.persist.ClassMolder.load(ClassMolder.java:742)
> > at
>org.exolab.castor.persist.LockEngine.load(LockEngine.java:361)
> > at
> >
>org.exolab.castor.persist.TransactionContext.load(TransactionContext.java:545)
> > at
>org.exolab.castor.persist.QueryResults.fetch(QueryResults.java:229)
> > at
> >
>org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:573)
> > at
> >
>org.exolab.castor.jdo.engine.OQLQueryImpl$OQLEnumeration.hasMore(OQLQueryImpl.java:556)
> > at estore.EstoreMain.oqlQueryTest(EstoreMain.java:24)
> > at estore.EstoreMain.goGoGo(EstoreMain.java:214)other ex..
> > org.exolab.castor.jdo.TransactionAbortedException: Nested error:
> > org.exolab.castor.jdo.PersistenceException: Object, estore.Produit/321,
> > isn't loaded in the persistence storage!
> > at estore.EstoreMain.main(EstoreMain.java:193)
> > org.exolab.castor.jdo.PersistenceException: Object, estore.Produit/321,
> > isn't loaded in the persistence storage!
> > at
>org.exolab.castor.persist.ClassMolder.preStore(ClassMolder.java:1106)
> > at
>org.exolab.castor.persist.LockEngine.preStore(LockEngine.java:710)
> > at
> >
>org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java:1146)
> > at
>org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:498)
> > at estore.EstoreMain.oqlQueryTest(EstoreMain.java:48)
> > at estore.EstoreMain.goGoGo(EstoreMain.java:214)
> > at estore.EstoreMain.main(EstoreMain.java:193
>
> > thx.
>
> > --
> > gilles
>
> >>From: Oleg Nitz <[EMAIL PROTECTED]>
> >>Reply-To: [EMAIL PROTECTED]
> >>To: [EMAIL PROTECTED]
> >>Subject: Re: [castor-dev] Simple OQL ... ?
> >>Date: Sat, 4 Aug 2001 00:29:40 +0300
> >>
> >>Hi Gilles,
> >>
> >>I guess you use "generic" driver, which is set in database.xml
> >>
> >><database name="..." engine="generic" >
> >>
> >>Should be
> >>
> >><database name="..." engine="mysql" >
> >>
> >>MySQL driver doesn't generate "{oj" at all.
> >>
> >>Oleg
> >>
> >>On Wednesday 01 August 2001 10:43, gilles dodinet wrote:
> >> > hi..
> >> >
> >> > m always in trouble with generation of bad sql queries... i've posted
> >>this
> >> > mess several days ago but got no answer.. could someone gimme a
>clue..
> >> > thanks.. below the previous post (no change - same error :()
> >> >
> >> > (i use mysql 3.23)
> >> >
> >> > Castor generates this sql query below (resulting of oql query "select
>p
> >> > from estore.Produit p") :
> >> >
> >> > SELECT
> >> >
> >>produit.id,produit.description,produit.prix,promo_prod.promo_id,ligne_de_co
> >> >mmande.id FROM
> >> > {oj produit LEFT OUTER JOIN promo_prod ON
> >> > produit.id=promo_prod.produit_id
> >> > LEFT OUTER JOIN ligne_de_commande ON
> >> > produit.id=ligne_de_commande.prd_id};
> >> >
> >> > that throws an SqlException. it think it would have generated this
>one
> >> > rather that don't produce sql error :
> >> >
> >> > SELECT
> >> >
> >>produit.id,produit.description,produit.prix,promo_prod.promo_id,ligne_de_co
> >> >mmande.id FROM { oj
> >> > {oj produit LEFT OUTER JOIN promo_prod ON
> >> > produit.id=promo_prod.produit_id }
> >> > LEFT OUTER JOIN ligne_de_commande ON
> >> > produit.id=ligne_de_commande.prd_id};
> >> >
> >> > does this problem come from a mapping error or is this a bug in
>castor??
> >> > (below portions of mapping files)
> >> >
> >> > -------------------- MAPPING -------------
> >> > in produit.xml (class Produit and inherited classes) :
> >> >
> >> > <field name="ldc" type="estore.LigneDeCommande" required="false"
> >> > collection="vector">
> >> > <sql many-key="prd_id"/>
> >> > </field>
> >> >
> >> > in commande.xml (class Commande and LigneDeCommande ) :
> >> >
> >> > <field name="prd" type="estore.Produit">
> >> > <sql name="prd_id" />
> >> > </field>
> >> > -----------------------------END MAPPING ---------------------
> >> >
> >> > thx for your replies.
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > _________________________________________________________________
> >> > T�l�chargez MSN Explorer gratuitement � l'adresse
> >> > http://explorer.msn.fr/intl.asp
> >> >
> >> > -----------------------------------------------------------
> >> > If you wish to unsubscribe from this mailing, send mail to
> >> > [EMAIL PROTECTED] with a subject of:
> >> > unsubscribe castor-dev
> >>
> >>-----------------------------------------------------------
> >>If you wish to unsubscribe from this mailing, send mail to
> >>[EMAIL PROTECTED] with a subject of:
> >> unsubscribe castor-dev
> >>
>
>
> > _________________________________________________________________
> > T�l�chargez MSN Explorer gratuitement � l'adresse
> > http://explorer.msn.fr/intl.asp
>
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> > unsubscribe castor-dev
>
>-----------------------------------------------------------
>If you wish to unsubscribe from this mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
_________________________________________________________________
T�l�chargez MSN Explorer gratuitement � l'adresse
http://explorer.msn.fr/intl.asp
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev