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

Persistance des données Java Discussion :

OJB : générer une clé primaire via une séquence


Sujet :

Persistance des données Java

  1. #1
    Membre expert
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 3 100
    Points
    3 100
    Par défaut OJB : générer une clé primaire via une séquence
    Bonjour,

    J'essaye de faire générer mes clés primaire par mon broker, mais sans succès...
    Je suis entrain de migrer d'une base db2, où cela fonctionnait, à une base oracle.

    Voila la déclaration de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <jdbc-connection-descriptor jcd-alias="dbresources"	default-connection="true" platform="Oracle10g" jdbc-level="2.0" batch-mode="true"	
    	jndi-datasource-name="java:comp/env/jdbc/toto_ds">
    	<sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
    	    <attribute attribute-name="autoNaming" attribute-value="true"/>
    	</sequence-manager>
    </jdbc-connection-descriptor>
    Voila la déclaration de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <class-descriptor class="ma.classe" table="MaTable">
    	<field-descriptor name="id" column="ID" jdbc-type="INTEGER"
    		primarykey="true" autoincrement="true" sequence-name="S_MaTable">
    	</field-descriptor>
    	<field-descriptor name="idUser" column="ID_USER" jdbc-type="VARCHAR"
    		nullable="true" indexed="false">
    	</field-descriptor>
    </class-descriptor>
    Et voila l'erreur que j'obtiens lors d'un broker.store(object);
    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
     
    14:58:37,165 ERROR [STDERR] org.apache.ojb.broker.PersistenceBrokerException: Error while try to assign identity value
    	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(Unknown Source)
    ...
    Caused by: org.apache.ojb.broker.util.sequence.SequenceManagerException: 
    Could not grab next id, failed with 
    This feature is not supported by this implementation
    Creation of new sequence failed with 
    This feature is not supported by this implementation
     
    	at org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl.getUniqueLong(Unknown Source)
    	at org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown Source)
    	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.assignAutoincrementSequences(Unknown Source)
    	... 51 more
    Caused by: java.lang.UnsupportedOperationException: This feature is not supported by this implementation
    	at org.apache.ojb.broker.platforms.PlatformDefaultImpl.createSequenceQuery(Unknown Source)
    	at org.apache.ojb.broker.platforms.PlatformDefaultImpl.createSequenceQuery(Unknown Source)
    	at org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl.createSequence(Unknown Source)
    	... 54 more
    J'ai aussi essayé de changer mon sequence manager par :
    org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl
    mais j'ai aussi une erreur
    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
     
    15:03:04,545 ERROR [STDERR] org.apache.ojb.broker.PersistenceBrokerException: Error while try to assign identity value
    	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(Unknown Source)
    ...
    Caused by: org.apache.ojb.broker.util.sequence.SequenceManagerException: Can't build new sequence
    	at org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getSequence(Unknown Source)
    	at org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getUniqueLong(Unknown Source)
    	at org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(Unknown Source)
    	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.assignAutoincrementSequences(Unknown Source)
    	... 51 more
    Caused by: org.apache.ojb.broker.PersistenceBrokerException: Can't generate primary key values for given Identity org.apache.ojb.broker.util.sequence.HighLowSequence{S_MaTable}
    	at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(Unknown Source)
    	at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(Unknown Source)
    	at org.apache.ojb.broker.accesslayer.StatementManager.getKeyValues(Unknown Source)
    	at org.apache.ojb.broker.accesslayer.StatementManager.bindSelect(Unknown Source)
    	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.materializeObject(Unknown Source)
    	at org.apache.ojb.broker.core.PersistenceBrokerImpl.getPlainDBObject(Unknown Source)
    	at org.apache.ojb.broker.core.PersistenceBrokerImpl.getDBObject(Unknown Source)
    	at org.apache.ojb.broker.core.PersistenceBrokerImpl.doGetObjectByIdentity(Unknown Source)
    	at org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByIdentity(Unknown Source)
    	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByIdentity(Unknown Source)
    	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByIdentity(Unknown Source)
    	at org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSequence(Unknown Source)
    	... 55 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    	... 67 more
    Pour info la clé primaire de l'objet insérée est nulle, elle devrait normalement être remplacé par la valeur next de la séquence.

    Merci de votre aide, parce que là, je galère...
    dam's

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 3 100
    Points
    3 100
    Par défaut
    Solution trouvée :
    dans le jdbc-connection-descriptor au lieu de mettre Oracle10g dans la variable platform j'ai mis Oracle et ça fonctionne parfaitement.
    dam's

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

Discussions similaires

  1. Modification dans une bdd via une liste choisie via une checkbox
    Par LuffyWinchester dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/03/2015, 15h41
  2. Réponses: 1
    Dernier message: 03/10/2014, 19h40
  3. [PHP 5.0] Générer un nombre aléatoire via une date
    Par fallais dans le forum Langage
    Réponses: 7
    Dernier message: 31/10/2010, 16h31
  4. Ecriture d'une clé primaire via via un ETL
    Par kfmystik dans le forum Alimentation
    Réponses: 3
    Dernier message: 04/09/2008, 11h04
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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