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:
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:
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:
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:
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...