kawtarinpt
Messages postés4Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention21 avril 2009
-
21 avril 2009 à 14:13
Menkouss
Messages postés1Date d'inscriptionjeudi 3 février 2011StatutMembreDernière intervention19 mai 2012
-
19 mai 2012 à 16:47
bonjour
lors de la connexion de ma base de données Oracle (10g) à l'application de gestion des hotels en utilisant l'outil hibernate, j'ai eu des problèmes à l'insertion de nouveau hotels.
les erreurs qui me donne sont les suivants:
Hibernate: insert into hotels (name, web_address, address, latitude, longitude) values (?, ?, ?, ?, ?)
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: could not insert: [metier.Hotels]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1986)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2405)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:544)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:533)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:529)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:292)
at $Proxy0.save(Unknown Source)
at metier.getsionH.addHotels(getsionH.java:12)
at metier.test.main(test.java:8)
Caused by: java.sql.SQLException: ORA-01400: impossible d'insérer NULL dans ("SYSTEM"."HOTELS"."ID")
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:590)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1973)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1119)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2191)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2064)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2989)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:658)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1976)
... 22 more
si quelqu'un une solution qui me l'envoie.
merci d'avance.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 avril 2009 à 14:24
Salut,
Pourtant l'erreur est on ne peut plus claire :
impossible d'insérer NULL dans ("SYSTEM"."HOTELS"."ID")
Donc soit tu génères tes propres valeurs puis les insére dans ta base de données, soit tu développe un trigger dans ta base oracle qui sera chargé de générer l'id.
kawtarinpt
Messages postés4Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention21 avril 2009 21 avril 2009 à 18:23
salut ,
merci pour la solution ; j'ai essayé d'insérer l'identificateur manuellement et cà marché. :-)
comment je peut le faire de manière automatique à l'aide de trigger ? j'ai besoin d'automatiser l'incrémentation.
merci encore.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 avril 2009 à 18:33
Fais une recherche sur google ou sur notre site dédié à SQL (sqlfr) : la création d'un trigger pour cà avec oracle est un sujet "classique" sur les forums de prog.