2017-10-10 5 views
2

Depuis il y a quelques jours, je ne peux pas trouver une solution au problème suivant:JPA: Supprimer le contenu de plusieurs entités en cascade

Ma demande contient les entités:

- Wording 
- Language 
- Category 
- Example 

Avec les relations suivantes:

Wording 1 ------->------- 1 Language 

Wording 1 ------->------- 1 Category 

Category 1 ------>--------1 Language 

Wording 1 ------->--------* Example 

Mon objectif est de supprimer un Langue et par conséquent le reste des entités est supprimé en cascade. Par exemple, si je supprime la langue « anglais », toutes catégories et doivent être libellés supprimés, ainsi que les exemples liés à la Sémantique.

Cette fonctionne lorsque je fais le schéma SQL, manuellement, sur ma base de données Derby (en mémoire), en ne définissant que "ON DELETE CASCADE" sur toutes les clés étrangères. Alors je lance:

DELETE FROM Language WHERE name = 'English'; 

Mais quelque chose que je fais mal quand je configure mes @Entities, car il renvoie les questions concernant les exemples. si le texte ne contient pas d'exemples, la suppression fonctionne comme un charme, sinon je reçois l'erreur:

org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement 

Plus d'infos:

@Entity 
@Table (name = "Wording") 
public class Wording implements Serializable { 
(...) 
    private long wordingId; 
    private Language language; 
    private Category category; 
    private Set <Example> examples = new HashSet<>(); 
(...) 

    @Id 
    @Column(name = "wordingId", unique = true, nullable = false) 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    public long getWordingId() { 
     return wordingId; 
    } 

    @ManyToOne 
    @Access(AccessType.PROPERTY) 
    @OnDelete(action = OnDeleteAction.CASCADE) 
    @JoinColumn(name = "languageId", nullable = false) 
    public Language getLanguage() { 
     return language; 
    } 

    @ManyToOne 
    @Access(AccessType.PROPERTY) 
    @OnDelete(action = OnDeleteAction.CASCADE) 
    @JoinColumn(name = "categoryId", nullable = false)  
    public Category getCategory() { 
     return category; 
    } 
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) 
    @OnDelete(action = OnDeleteAction.CASCADE)  
    @JoinColumn(name = "wordingId") 
    public Set<Example> getExamples() { 
     return examples; 
    } 
(...) 

Ma question est donc: Pourquoi cette configuration ne reproduit pas le même schéma SQL, que je faisais auparavant, manuellement, et fonctionne?

Merci! ;-)

EDIT:

Ci-dessous une partie de la pile: (Il se pose lors de la suppression toutes les langues)

2017-10-10 17:56:52.421 DEBUG 6120 --- [ main] org.hibernate.SQL : select examples0_.wording_id as wording_6_1_0_, examples0_.example_id as example_1_1_0_, examples0_.example_id as example_1_1_1_, examples0_.created_on as created_2_1_1_, examples0_.enable as enable3_1_1_, examples0_.example as example4_1_1_, examples0_.modified_on as modified5_1_1_ from example examples0_ where examples0_.wording_id=? Hibernate: select examples0_.wording_id as wording_6_1_0_, examples0_.example_id as example_1_1_0_, examples0_.example_id as example_1_1_1_, examples0_.created_on as created_2_1_1_, examples0_.enable as enable3_1_1_, examples0_.example as example4_1_1_, examples0_.modified_on as modified5_1_1_ from example examples0_ where examples0_.wording_id=? 2017-10-10 17:56:52.427 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [1] 2017-10-10 17:56:52.444 DEBUG 6120 --- [
main] org.hibernate.SQL : select language0_.language_id as language1_2_, language0_.created_on as created_2_2_, language0_.enable as enable3_2_, language0_.flag as flag4_2_, language0_.language as language5_2_, language0_.modified_on as modified6_2_ from languagge language0_ Hibernate: select language0_.language_id as language1_2_, language0_.created_on as created_2_2_, language0_.enable as enable3_2_, language0_.flag as flag4_2_, language0_.language as language5_2_, language0_.modified_on as modified6_2_ from languagge language0_ 2017-10-10 17:56:52.456 DEBUG 6120 --- [ main] org.hibernate.SQL
: delete from languagge where language_id=? Hibernate: delete from languagge where language_id=? 2017-10-10 17:56:52.473 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [1] 2017-10-10 17:56:52.505 DEBUG 6120 --- [
main] org.hibernate.SQL : insert into languagge (language_id, created_on, enable, flag, language, modified_on) values (default, ?, ?, ?, ?, ?) Hibernate: insert into languagge (language_id, created_on, enable, flag, language, modified_on) values (default, ?, ?, ?, ?, ?) 2017-10-10 17:56:52.505 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.506 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [SMALLINT] - [true] 2017-10-10 17:56:52.506 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [VARBINARY] - [null] 2017-10-10 17:56:52.506 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [VARCHAR] - [English] 2017-10-10 17:56:52.506 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.507 DEBUG 6120 --- [ main] org.hibernate.SQL
: values identity_val_local() Hibernate: values identity_val_local() 2017-10-10 17:56:52.509 DEBUG 6120 --- [ main] org.hibernate.SQL : insert into category (category_id, category, created_on, enable, language_id, modified_on) values (default, ?, ?, ?, ?, ?) Hibernate: insert into category (category_id, category, created_on, enable, language_id, modified_on) values (default, ?, ?, ?, ?, ?) 2017-10-10 17:56:52.510 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [myCategory] 2017-10-10 17:56:52.510 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder
: binding parameter [2] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.510 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [SMALLINT] - [true] 2017-10-10 17:56:52.511 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [BIGINT] - [2] 2017-10-10 17:56:52.511 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.511 DEBUG 6120 --- [ main] org.hibernate.SQL
: values identity_val_local() Hibernate: values identity_val_local() 2017-10-10 17:56:52.551 DEBUG 6120 --- [ main] org.hibernate.SQL : insert into wording (wording_id, category_id, created_on, image, language_id, modified_on, wording) values (default, ?, ?, ?, ?, ?, ?) Hibernate: insert into wording (wording_id, category_id, created_on, image, language_id, modified_on, wording) values (default, ?, ?, ?, ?, ?, ?) 2017-10-10 17:56:52.552 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [2] 2017-10-10 17:56:52.552 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.552 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [BLOB] - [[[email protected]] 2017-10-10 17:56:52.552 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [BIGINT] - [2] 2017-10-10 17:56:52.553 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.553 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [6] as [VARCHAR] - [MyWording] 2017-10-10 17:56:52.554 DEBUG 6120 --- [
main] org.hibernate.SQL : values identity_val_local() Hibernate: values identity_val_local() 2017-10-10 17:56:52.555 DEBUG 6120 --- [ main] org.hibernate.SQL
: insert into example (example_id, created_on, enable, example, modified_on) values (default, ?, ?, ?, ?) Hibernate: insert into example (example_id, created_on, enable, example, modified_on) values (default, ?, ?, ?, ?) 2017-10-10 17:56:52.559 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.559 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [SMALLINT] - [true] 2017-10-10 17:56:52.559 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [VARCHAR] - [myExample] 2017-10-10 17:56:52.560 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.561 DEBUG 6120 --- [ main] org.hibernate.SQL
: values identity_val_local() Hibernate: values identity_val_local() 2017-10-10 17:56:52.562 DEBUG 6120 --- [ main] org.hibernate.SQL : insert into example (example_id, created_on, enable, example, modified_on) values (default, ?, ?, ?, ?) Hibernate: insert into example (example_id, created_on, enable, example, modified_on) values (default, ?, ?, ?, ?) 2017-10-10 17:56:52.562 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.562 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder
: binding parameter [2] as [SMALLINT] - [true] 2017-10-10 17:56:52.563 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder
: binding parameter [3] as [VARCHAR] - [myAnotherExample] 2017-10-10 17:56:52.563 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [TIMESTAMP] - [Tue Oct 10 17:56:52 CEST 2017] 2017-10-10 17:56:52.564 DEBUG 6120 --- [ main] org.hibernate.SQL
: values identity_val_local() Hibernate: values identity_val_local() 2017-10-10 17:56:52.566 DEBUG 6120 --- [ main] org.hibernate.SQL : update example set wording_id=? where example_id=? Hibernate: update example set wording_id=? where example_id=? 2017-10-10 17:56:52.572 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [2] 2017-10-10 17:56:52.573 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [1] 2017-10-10 17:56:52.575 DEBUG 6120 --- [ main] org.hibernate.SQL : update example set wording_id=? where example_id=? Hibernate: update example set wording_id=? where example_id=? 2017-10-10 17:56:52.576 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [2] 2017-10-10 17:56:52.576 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [2] 2017-10-10 17:56:52.592 DEBUG 6120 --- [ main] org.hibernate.SQL : select wording0_.wording_id as wording_1_4_0_, wording0_.category_id as category6_4_0_, wording0_.created_on as created_2_4_0_, wording0_.image as image3_4_0_, wording0_.language_id as language7_4_0_, wording0_.modified_on as modified4_4_0_, wording0_.wording as wording5_4_0_, category1_.category_id as category1_0_1_, category1_.category as category2_0_1_, category1_.created_on as created_3_0_1_, category1_.enable as enable4_0_1_, category1_.language_id as language6_0_1_, category1_.modified_on as modified5_0_1_, language2_.language_id as language1_2_2_, language2_.created_on as created_2_2_2_, language2_.enable as enable3_2_2_, language2_.flag as flag4_2_2_, language2_.language as language5_2_2_, language2_.modified_on as modified6_2_2_, examples3_.wording_id as wording_6_1_3_, examples3_.example_id as example_1_1_3_, examples3_.example_id as example_1_1_4_, examples3_.created_on as created_2_1_4_, examples3_.enable as enable3_1_4_, examples3_.example as example4_1_4_, examples3_.modified_on as modified5_1_4_, language4_.language_id as language1_2_5_, language4_.created_on as created_2_2_5_, language4_.enable as enable3_2_5_, language4_.flag as flag4_2_5_, language4_.language as language5_2_5_, language4_.modified_on as modified6_2_5_ from wording wording0_ inner join category category1_ on wording0_.category_id=category1_.category_id inner join languagge language2_ on category1_.language_id=language2_.language_id left outer join example examples3_ on wording0_.wording_id=examples3_.wording_id left outer join languagge language4_ on wording0_.language_id=language4_.language_id where wording0_.wording_id=? Hibernate: select wording0_.wording_id as wording_1_4_0_, wording0_.category_id as category6_4_0_, wording0_.created_on as created_2_4_0_, wording0_.image as image3_4_0_, wording0_.language_id as language7_4_0_, wording0_.modified_on as modified4_4_0_, wording0_.wording as wording5_4_0_, category1_.category_id as category1_0_1_, category1_.category as category2_0_1_, category1_.created_on as created_3_0_1_, category1_.enable as enable4_0_1_, category1_.language_id as language6_0_1_, category1_.modified_on as modified5_0_1_, language2_.language_id as language1_2_2_, language2_.created_on as created_2_2_2_, language2_.enable as enable3_2_2_, language2_.flag as flag4_2_2_, language2_.language as language5_2_2_, language2_.modified_on as modified6_2_2_, examples3_.wording_id as wording_6_1_3_, examples3_.example_id as example_1_1_3_, examples3_.example_id as example_1_1_4_, examples3_.created_on as created_2_1_4_, examples3_.enable as enable3_1_4_, examples3_.example as example4_1_4_, examples3_.modified_on as modified5_1_4_, language4_.language_id as language1_2_5_, language4_.created_on as created_2_2_5_, language4_.enable as enable3_2_5_, language4_.flag as flag4_2_5_, language4_.language as language5_2_5_, language4_.modified_on as modified6_2_5_ from wording wording0_ inner join category category1_ on wording0_.category_id=category1_.category_id inner join languagge language2_ on category1_.language_id=language2_.language_id left outer join example examples3_ on wording0_.wording_id=examples3_.wording_id left outer join languagge language4_ on wording0_.language_id=language4_.language_id where wording0_.wording_id=? 2017-10-10 17:56:52.604 TRACE 6120 --- [
main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [2] 2017-10-10 17:56:52.633 DEBUG 6120 --- [
main] org.hibernate.SQL : select language0_.language_id as language1_2_, language0_.created_on as created_2_2_, language0_.enable as enable3_2_, language0_.flag as flag4_2_, language0_.language as language5_2_, language0_.modified_on as modified6_2_ from languagge language0_ Hibernate: select language0_.language_id as language1_2_, language0_.created_on as created_2_2_, language0_.enable as enable3_2_, language0_.flag as flag4_2_, language0_.language as language5_2_, language0_.modified_on as modified6_2_ from languagge language0_ 2017-10-10 17:56:52.634 DEBUG 6120 --- [ main] org.hibernate.SQL
: delete from languagge where language_id=? Hibernate: delete from languagge where language_id=? 2017-10-10 17:56:52.634 TRACE 6120 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [2] 2017-10-10 17:56:52.649 WARN 6120 --- [
main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 20000, SQLState: 23503 2017-10-10 17:56:52.650 ERROR 6120 --- [
main] o.h.engine.jdbc.spi.SqlExceptionHelper : DELETE on table 'WORDING' caused a violation of foreign key constraint 'FK_WORDING' for key (2). The statement has been rolled back. 2017-10-10 17:56:52.651 INFO 6120 --- [ main] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements Tests run: 4, Failures: 0, Errors: 1, Skipped: 1, Time elapsed: 9.076 sec <<< FAILURE! - in com.mycompany.languages.model.dao.WordingDAOTest testDeleteAfterDeletingLanguage(com.mycompany.languages.model.dao.WordingDAOTest) Time elapsed: 0.06 sec <<< ERROR! org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.impl.sql.execute.ReferencedKeyRIChecker.doCheck(Unknown Source) at org.apache.derby.impl.sql.execute.RISetChecker.doPKCheck(Unknown Source) at org.apache.derby.impl.sql.execute.DeleteResultSet.runFkChecker(Unknown Source) at org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.runFkChecker(Unknown Source) at org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.runFkChecker(Unknown Source) at org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.runFkChecker(Unknown Source) at org.apache.derby.impl.sql.execute.DeleteCascadeResultSet.open(Unknown Source) at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeLargeUpdate(Unknown Source) at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114) at com.sun.proxy.$Proxy104.executeUpdate(Unknown Source) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204) at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45) at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3261) at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3498) at org.hibernate.action.internal.EntityDeleteAction.execute(EntityDeleteAction.java:98) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:582) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1282) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:465) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2963) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2339) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:485) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:147) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65) at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:61) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) at com.sun.proxy.$Proxy96.deleteAll(Unknown Source) at com.mycompany.languages.model.dao.WordingDAOTest.setUp(WordingDAOTest.java:222)

2017-10-10 17:56:52.694 INFO 6120 --- [ Thread-4] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]865dd6: startup date [Tue Oct 10 17:56:44 CEST 2017]; root of context hierarchy 2017-10-10 17:56:52.698 INFO 6120 --- [ Thread-4] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'

Résultats:

Tests en erreur: WordingDAOTest.setUp: 222 »DataIntegrityViolation n'a pas pu exécuter l'instruction; ...

Répondre

1

Vous avez eu cette erreur car vous essayez de supprimer certains languages qui sont utilisés dans Wording et Wording ne tentez pas accepter que language peut être null ainsi utiliser à la place:

@ManyToOne 
    @Access(AccessType.PROPERTY) 
    @OnDelete(action = OnDeleteAction.CASCADE) 
    @JoinColumn(name = "languageId", nullable = true) 
    public Language getLanguage() { 
     return language; 
    } 
+0

Merci pour votre réponse, mais il ne résout pas le problème. Le problème se pose lorsqu'il existe des formulations avec des exemples disponibles. Sans eux, ça a toujours marché! –

+0

Pouvez-vous poster toute la pile que vous obtenez? –

+0

Oui, je viens d'éditer mon post maintenant –