IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Rollback Exception improbable


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Par défaut Rollback Exception improbable
    Bonjour à tous,

    je me tourne vers car comme à chaque fois vous me semblez être la solution de dernier. J'ai beau retourner le problème dans tous les sens et demander à tous le monde, nos compétences ne sont pas suffisantes. Alors voilà la bête :

    J'ai une belle RollbackException qui est levée lorsque le programme tente un update sur une table. En voici la trace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    javax.persistence.RollbackException: Error while commiting the transaction
            at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71)
            at com.sfr.rprm.services.impl.AccountingVoucherImpl.updateProformaGenerationStep(AccountingVoucherImpl.java:156)
            at $AccountingVoucherServices_12255d911b3.updateProformaGenerationStep($AccountingVoucherServices_12255d911b3.java)
            at $AccountingVoucherServices_12255d911b1.updateProformaGenerationStep($AccountingVoucherServices_12255d911b1.java)
            ...
    Caused by: java.lang.ClassCastException: com.sfr.rprm.persistence.Party
            at org.hibernate.type.StringType.toString(StringType.java:44)
            at org.hibernate.type.NullableType.toLoggableString(NullableType.java:218)
            ...
            at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
            at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
    Les select quant à eux fonctionnent très bien, et le truc marrant c'est que cette erreur je ne l'ai que sur certains environnement, sur d'autres le programme marche à merveille. Du coup j'irais bien regarder du côté des configs hibernate et/ou oracle mais je ne sais pas par quel bout commencer ...

    Cette différence de comportement entre les environnements ainsi que les moultes vérifications notamment au niveau du mapping me font penser que le code est bon, mais au cas où, le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public class AccountingVoucherImpl 
    extends AbstractService
    implements AccountingVoucherServices {
      public AccountingVoucherImpl() {
    	super();
      }
     
      public List<AccountingVoucher> findAllAccountingVouchers() {
    	final List<AccountingVoucher> accountingVoucher = 
    		getEM().createNamedQuery(AccountingVoucher.FIND_ALL).getResultList();
     
    	if (accountingVoucher.size() > 0) {
    		return accountingVoucher;
    	} else {
    		return null;
    	}
      }
     
      public int updateProformaGenerationStep(Integer id, Long value) {
    	getEM().getTransaction().begin();
    	int i=(getEM().createNamedQuery(AccountingVoucher.PROFORMA_GENERATION_STEP)
    			.setParameter("id", id)
    			.setParameter("proformaGenerationStepValue", value)
    			.executeUpdate());
    	getEM().getTransaction().commit();
    	return i;
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    @Entity
    @Table(name = "ST_ACCOUNTING_VOUCHER")
    @NamedQueries({
      @NamedQuery(name = "AccountingVoucher.findAll", query = "SELECT a FROM AccountingVoucher a"),
      @NamedQuery(name = "AccountingVoucher.updateProformaGenerationStep",
    	query = "UPDATE AccountingVoucher a SET a.proformaGenerationStep = :proformaGenerationStepValue WHERE a.id = :id"
      )
    })
    public class AccountingVoucher {
      public static String FIND_ALL = "AccountingVoucher.findAll";
      public static String PROFORMA_GENERATION_STEP = "AccountingVoucher.updateProformaGenerationStep";
     
      @Id
      @Basic(optional = false)
      @Column(name = "ACCOUNTING_VOUCHER_ID")
      private Integer id;
     
      @ManyToOne
      @JoinColumn(name="VENDOR_ID")
      private Party vendor;
     
      @ManyToOne
      @JoinColumn(name="BUYER_ID")
      private Party buyer;
     
      @Column(name = "PROFORMA_GENERATION_STEP")
      private Long proformaGenerationStep;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Entity
    public class Party implements Serializable {
      @ManyToOne
      @JoinColumn(name="BUYER_ID")
      private Party buyer;
     
      @Id
      @Column(name="PARTY_ID", nullable = false)
      private String partyId;
     
      @ManyToOne
      @JoinColumn(name="VENDOR_ID")
      private Party vendor;
    }
    D'avance merci à tous pour quelque participation que ce soit !

  2. #2
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Par défaut
    Problème résolu, il s'agissait en réalité d'un bug Hibernate lié au niveau de log debug. Il ne faut en fait pas descendre en dessous du niveau info.

    http://opensource.atlassian.com/proj...rowse/HHH-2052

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EJB3.1] Transaction rollback : Comment gérer les Exceptions ?
    Par piemur2000 dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 09/02/2012, 09h33
  2. Transactions : pas de rollback après une exception levée
    Par if_zen dans le forum Glassfish et Payara
    Réponses: 7
    Dernier message: 22/04/2011, 10h31
  3. [Data] rollback de transaction sur exception metier uniquement.
    Par pdelorme dans le forum Spring
    Réponses: 6
    Dernier message: 03/12/2009, 10h01
  4. Réponses: 11
    Dernier message: 26/09/2007, 11h28
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo