gpt4 book ai didi

java - JPA:删除级联上多个实体的内容

转载 作者:行者123 更新时间:2023-12-02 09:46:16 24 4
gpt4 key购买 nike

从几天前开始,我找不到以下问题的解决方案:

我的应用程序包含以下实体:

- Wording
- Language
- Category
- Example

具有以下关系:
Wording 1 ------->------- 1 Language

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

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

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

我的目标是删除 语言,因此其余实体将在层叠时删除。
例如,如果我删除语言“英语”,则应删除所有类别和措辞,以及与这些措辞链接的示例。

当我在内存中的Derby数据库上手动执行SQL模式时,仅在所有外键上设置“ON DELETE CASCADE”时,此 可以使用。然后我运行:
DELETE FROM Language WHERE name = 'English';

但是当我配置@Entities时,我做错了,因为它返回有关示例的问题。
如果措辞不包含任何示例,则删除操作将作为一个 super 按钮,否则我将收到错误消息:
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] - [[B@1769d] 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.springframework.context.annotation.AnnotationConfigApplicationContext@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无法执行语句; ...

最佳答案

之所以出现此错误,是因为您试图删除languages中使用的一些Wording,而Wording不接受language可以是null,因此请改用:

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

关于java - JPA:删除级联上多个实体的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46669835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com