2017-10-10 145 views
2

由於一些天前,我無法找到解決如下問題的多個實體的內容:JPA:刪除的級聯

我的應用程序中包含的實體:

- Wording 
- Language 
- Category 
- Example 

通過以下關係式:

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

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

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

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

我的目標是刪除語言,因此剩下的實體會在級聯中被刪除。 例如,如果我刪除語言「英語」,所有類別措辭應該刪除,並且還例子措辭

工作當我做SQL模式,手工,我Derby數據庫(在內存中),僅設置上的所有外鍵 「ON DELETE CASCADE」。然後我運行:

DELETE FROM Language WHERE name = 'English'; 

但是我做錯了當我配置我的@Entities,因爲它返回有關示例的問題。 如果措辭不包含實例,然後刪除工作作爲掛飾,否則我收到錯誤:

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

更多信息:

@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; 
    } 
(...) 

所以我的問題是:爲什麼這個配置不會重現相同的SQL模式,我以前做過,手動和工​​作?

謝謝! ;-)

編輯:

下的堆棧的一部分:

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'

結果 (它刪除所有的語言時出現):

測試錯誤: WordingDAOTest.setUp: 222»DataIntegrityViolation無法執行語句; ...

回答

1

您得到此錯誤是因爲您嘗試刪除一些languages了在WordingWording使用不接受language可以null所以儘量到改用:

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

感謝您的答覆,但它並沒有解決問題。如果有可用示例的措詞,則會出現問題。沒有他們,它總是奏效! –

+0

你可以發佈你獲得的所有堆棧嗎? –

+0

是的,我剛剛編輯了我的帖子 –