Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JoinTable delete传播休眠多个主机_Java_Hibernate_Jpa - Fatal编程技术网

Java 使用JoinTable delete传播休眠多个主机

Java 使用JoinTable delete传播休眠多个主机,java,hibernate,jpa,Java,Hibernate,Jpa,我定义了以下属性: @实体 @表(name=“person”) 公共类Person扩展抽象实体{ @ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL) @级联({org.hibernate.annotations.CascadeType.ALL}) @JoinTable(name=“person\u unit”,joinColumns={@JoinColumn(name=“person\u id”)},inverseJoinColu

我定义了以下属性:

@实体
@表(name=“person”)
公共类Person扩展抽象实体{
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@级联({org.hibernate.annotations.CascadeType.ALL})
@JoinTable(name=“person\u unit”,joinColumns={@JoinColumn(name=“person\u id”)},inverseJoinColumns={@JoinColumn(name=“unit\u id”)})
私人设置单位;
}
它引用了
OrgUnit
类,定义为:

@实体
@表(name=“orgunit”,uniqueConstraints={@UniqueConstraint(columnNames={
“parentunit_id”,“name”})
公共类OrgUnit扩展了AbstractEntity{
...
}
现在,当我尝试删除
人员
时,它应该只删除
人员
人员单元
表中的行。但是Hibernate似乎也尝试删除链接的
OrgUnit
,因为我收到以下错误消息:

2011-12-02 10:52:30,527 WARN  [ajp-2009-2] JDBCExceptionReporter: SQL Error: 547, SQLState: 23000
2011-12-02 10:52:30,527 ERROR [ajp-2009-2] JDBCExceptionReporter: The DELETE statement conflicted with the REFERENCE constraint 'FKE6A2C42EB024FBA5'. The conflict occured in database TEST, table 'TEST.person_unit', column 'unit_id'.
2011-12-02 10:52:30,527 ERROR [ajp-2009-2] AbstractFlushingEventListener: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not delete: [<-- snip -->.server.entities.OrgUnit#337]
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2712)
    at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2895)
    at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:267)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:259)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:147)
    at <-- snip -->.server.controller.PersonController.deletePerson(PersonController.java:60)
2011-12-02 10:52:30527警告[ajp-2009-2]JDBCExceptionReporter:SQL错误:547,SQL状态:23000
2011-12-02 10:52:30527错误[ajp-2009-2]JDBCExceptionReporter:DELETE语句与引用约束“FKE6A2C42EB024FBA5”冲突。数据库测试表“TEST.person\u unit”列“unit\u id”中发生冲突。
2011-12-02 10:52:30527错误[ajp-2009-2]AbstractFlushingEventListener:无法将数据库状态与会话同步
org.hibernate.exception.ConstraintViolationException:无法删除:[.server.entities.OrgUnit#337]
位于org.hibernate.exception.sqlstatecoverter.convert(sqlstatecoverter.java:96)
位于org.hibernate.exception.jdbceptionhelper.convert(jdbceptionhelper.java:66)
位于org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2712)
位于org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2895)
位于org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
在org.hibernate.engine.ActionQueue.execute(ActionQueue.java:267)
位于org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:259)
位于org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
位于org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
位于org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
位于org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
位于org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
位于org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
位于org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
位于org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:147)
at.server.controller.PersonController.deletePerson(PersonController.java:60)

我在这里做错了什么?

是的,它传播删除,因为你让它用

@Cascade({ org.hibernate.annotations.CascadeType.ALL})
所有
包括
删除
。它不应用于许多协会