-->
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.  [ 3 posts ] 
Author Message
 Post subject: objet NULL avec la relation one-to-one
PostPosted: Mon May 23, 2005 8:16 am 
Newbie

Joined: Fri Aug 20, 2004 9:07 am
Posts: 8
Bonjour,
j'utilise hibernate 2.1.8.
J'ai un relation one-to-one entre deux objet: Contrat et Transaction.
a Chaque contrat est associe une transaction.
je veu faire l'action suivante: chercher les liste des contrats suivant des contraintes, mettre a jour chaque transaction de chaqun des contrat.
et voila les fichiers hbm:
Code:
   <class name="Contract" table="contrats">
      <id name="msisdn" type="string" length="63">
         <generator class="assigned"/>
      </id>

      <one-to-one
         name="transaction"
         outer-join="auto"
         property-ref="msisdn"
         />
   </class>

<class name="Transaction" table="transaction">
      <id name="id" column="id">
         <generator class="sequence">
            <param name="sequence">seq_id_transaction</param>
         </generator>
      </id>
      <property name="msisdn" type="string" length="63"/>
      
      <component name="bscsStatus" >
         <property name="value" column="statusbscs"/>
         <property name="date" column="statusbscs_date"/>
      </component>
   </class>


et les classes:
Code:
public class Contract {

   private String msisdn;

   private Transaction transaction;

   public String getMsisdn() {
      return msisdn;
   }

   public void setMsisdn(String msisdn) {
      this.msisdn = msisdn;
   }

      public Transaction getTransaction() {
      return transaction;
   }

   public void setTransaction(Transaction transaction) {
      this.transaction = transaction;
   }
}
public class Transaction {
   protected transient final Log log = LogFactory.getLog(this.getClass());
   private Integer id;

   private String msisdn;

public Integer getId() {
      return id;
   }

   public void setId(Integer id) {
      this.id = id;
   }
public Status getBscsStatus() {
      return bscsStatus;
   }

   public void setBscsStatus(Status bscsStatus) {
      this.bscsStatus = bscsStatus;
   }
   public String getMsisdn() {
      return msisdn;
   }

   public void setMsisdn(String msisdn) {
      
      this.msisdn = msisdn ;
   }

   
}

et voila le code que j'utilise pour faire mes changements:
Code:
List contracts = contractDao.findListContractToSendByMail();
      Status traite = new Status(Status.STATUS_CONTRACT_USED, new Date());
      for (Iterator iter = contracts.iterator(); iter.hasNext();) {
         Contract contract = (Contract) iter.next();
         Transaction transaction = contract.getTransaction();
         log.debug("transactions: "+transaction.getMsisdn());
            transaction.setBscsStatus(traite);
            log.debug("transaction traite: msisdn="
                  + transaction.getMsisdn() + " status: "
                  + transaction.getBscsStatus().getValue());


Le probleme c que Hibernate fait bien le chargement des contrats, et des transaction, la preuve c le log:
Code:
[net.sf.hibernate.impl.BatcherImpl] - preparing statement
[net.sf.hibernate.type.NullableType] - binding '21622815315' to parameter: 1
[net.sf.hibernate.loader.Loader] - processing result set
[net.sf.hibernate.type.NullableType] - returning '129' as column: id0_
[net.sf.hibernate.loader.Loader] - result row: 129
[net.sf.hibernate.loader.Loader] - done processing result set (1 rows)
[net.sf.hibernate.impl.BatcherImpl] - done closing: 0 open PreparedStatements, 0
open ResultSets
[net.sf.hibernate.impl.BatcherImpl] - closing statement
[net.sf.hibernate.loader.Loader] - total objects hydrated: 0
[net.sf.hibernate.impl.SessionImpl] - done materializing entity [Contract#21622815315]
[net.sf.hibernate.impl.SessionImpl] - initializing non-lazy collections

mais quand je fait getTransaction().getMsisdn(), j'obtien Null!

Merci d'avance pour votre aide.


Top
 Profile  
 
 Post subject:
PostPosted: Mon May 23, 2005 1:39 pm 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
est ce que ton sql te semble correct?
est ce que les deux tables partagent bien la même clé primaire?

As tu essayé demapper cette relation avec un simple many-to-one? ce qui est généralement plus pratique.

_________________
Anthony,
Get value thanks to your skills: http://www.redhat.com/certification


Top
 Profile  
 
 Post subject:
PostPosted: Tue May 24, 2005 2:53 am 
Newbie

Joined: Fri Aug 20, 2004 9:07 am
Posts: 8
Merci pour votre interet, en fait, mon probleme a ete resolu, il parait que c'etai pas un probleme de hibernate, c'etai un probleme de configuration de transaction dans Spring.


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

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.