2016-03-16 60 views
1

编辑1:在问题结尾处添加了休眠日志。编辑2: 该问题与我的数据库有关。如果我从单元测试执行同样的方法(单元测试配置为使用另一个数据库),插入语句通过... 我还没有写出一个重要的东西:我正在开发一个多租户系统,在架构上。我目前有4个模式对应4个不同的客户端。我想我mut有两个或更多的FK约束严重违反并指向同一个表。我现在正在寻找这种方式。休眠:在保存之前冲洗时出现约束违规

如果任何人都可以想到一个方法来找到重复的字段上的FK约束,我很乐意阅读它。

============================================== ===== 原贴:

Hibernate和JPA仍然是我漂亮的新,所以请多多包涵......

下面的代码就可以了。

PointAnalyse pointAnalyse = new PointAnalyse(); 
    em.persist(pointAnalyse); 

    // em.flush(); 

    ResourcesAnalyse resourcesAnalyse = new ResourcesAnalyse(); 
    resourcesAnalyse.setPointAnalyse(pointAnalyse); 

    em.persist(resourcesAnalyse); 

但是,如果我取消注释em.flush()或执行任何其他数据库操作(即使是一个简单的选择查询),大大节省了resourcesAnalyse实体时,我会得到一个ConstraintViolationException:

ERROR: une instruction insert ou update sur la table « ressources_analyse » viole la contrainte de clé 
étrangère « fk_ressources_analyse_point_analyse_id » 
    Détail : La clé (point_id)=(1722) n'est pas présente dans la table « point_analyse ».]] 

翻译:FK point_id与编号1722不存在于point_analyses表中。

如果我跟踪Hibernate查询,我可以看到在尝试保存resourceAnalyse对象之前确实插入了带有该ID的行,所以不应该有任何错误。

这里是映射:

@Entity 
@Table(name = "point_analyse") 
public class PointAnalyse implements Serializable { 

@Id 
    @SequenceGenerator(name = "POINT_ANALYSE_ID_GENERATOR", sequenceName = "POINT_ANALYSE_ID_SEQ", allocationSize = 1) 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "POINT_ANALYSE_ID_GENERATOR") 
    @XmlElement 
    @Getter 
    @Setter 
    private Long id; 

... 
} 




@Entity 
@Table(name = "ressources_analyse") 
@NoArgsConstructor 
@Getter 
@Setter 
public class ResourcesAnalyse implements Serializable { 

@Id 
@SequenceGenerator(name = "RESSOURCES_ANALYSE_ID_GENERATOR", sequenceName = "RESSOURCES_ANALYSE_ID_SEQ", allocationSize = 1) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "RESSOURCES_ANALYSE_ID_GENERATOR") 
    private Long id; 

@ManyToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name = "point_id") 
    private PointAnalyse pointAnalyse; 

.... 
} 

非常感谢您的阅读本,如果任何人都可以解释我做错了。

这里是休眠日志的相关部分:)或

[2016-03-17T08:29:21.494+0100] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=35 _ThreadName=Thread-8] [timeMillis: 1458199761494] [levelValue: 800] [[ 
    Hibernate: 
    select 
     nextval ('POINT_ANALYSE_ID_SEQ')]] 

[2016-03-17T08:29:21.496+0100] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=35 _ThreadName=Thread-8] [timeMillis: 1458199761496] [levelValue: 800] [[ 
    Hibernate: 
    insert 
    into 
     point_analyse 
     (accuracy, bearing, distance, gprs_signal, latitude, longitude, max_signal_sat, min_signal_sat, nb_sat, route_analyse_id, speed, tag, timestamp, id) 
    values 
     (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]] 

[2016-03-17T08:29:21.498+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761498] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [1] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.499+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761499] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [2] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.499+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761499] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [3] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.501+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761501] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [4] as [BIGINT] - [null]]] 

[2016-03-17T08:29:21.501+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761501] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [5] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.501+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761501] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [6] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.502+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761502] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [7] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.502+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761502] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [8] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.503+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761503] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [9] as [BIGINT] - [null]]] 

[2016-03-17T08:29:21.503+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761503] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [10] as [BIGINT] - [null]]] 

[2016-03-17T08:29:21.504+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761504] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [11] as [DOUBLE] - [null]]] 

[2016-03-17T08:29:21.504+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761504] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [12] as [VARCHAR] - [null]]] 

[2016-03-17T08:29:21.504+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761504] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [13] as [BIGINT] - [null]]] 

[2016-03-17T08:29:21.505+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761505] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [14] as [BIGINT] - [1723]]] 

[2016-03-17T08:29:21.506+0100] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=35 _ThreadName=Thread-8] [timeMillis: 1458199761506] [levelValue: 800] [[ 
    Hibernate: 
    select 
     nextval ('RESSOURCES_ANALYSE_ID_SEQ')]] 

[2016-03-17T08:29:21.507+0100] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=35 _ThreadName=Thread-8] [timeMillis: 1458199761507] [levelValue: 800] [[ 
    Hibernate: 
    insert 
    into 
     ressources_analyse 
     (route_id, point_id, uri_ressource, id) 
    values 
     (?, ?, ?, ?)]] 

[2016-03-17T08:29:21.508+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761508] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [1] as [BIGINT] - [null]]] 

[2016-03-17T08:29:21.509+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761509] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [2] as [BIGINT] - [1723]]] 

[2016-03-17T08:29:21.509+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761509] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [3] as [VARCHAR] - [null]]] 

[2016-03-17T08:29:21.510+0100] [glassfish 4.1] [TRACE] [] [org.hibernate.type.descriptor.sql.BasicBinder] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761510] [levelValue: 400] [CLASSNAME: org.hibernate.type.descriptor.sql.BasicBinder] [METHODNAME: bind] [[ 
    binding parameter [4] as [BIGINT] - [113]]] 

[2016-03-17T08:29:21.513+0100] [glassfish 4.1] [INFO] [] [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761513] [levelValue: 800] [[ 
    HHH000010: On release of batch it still contained JDBC statements]] 

[2016-03-17T08:29:21.514+0100] [glassfish 4.1] [WARN] [] [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761514] [levelValue: 900] [[ 
    SQL Error: 0, SQLState: 23503]] 

[2016-03-17T08:29:21.514+0100] [glassfish 4.1] [ERROR] [] [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761514] [levelValue: 1000] [[ 
    L'élément du batch 0 insert into ressources_analyse (route_id, point_id, uri_ressource, id) values (NULL, 1723, NULL, 113) a été annulé. Appeler getNextException pour en connaître la cause.]] 

[2016-03-17T08:29:21.514+0100] [glassfish 4.1] [WARN] [] [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761514] [levelValue: 900] [[ 
    SQL Error: 0, SQLState: 23503]] 

[2016-03-17T08:29:21.515+0100] [glassfish 4.1] [ERROR] [] [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761515] [levelValue: 1000] [[ 
    ERREUR: une instruction insert ou update sur la table « ressources_analyse » viole la contrainte de clé 
étrangère « fk_ressources_analyse_point_analyse_id » 
    Détail : La clé (point_id)=(1723) n'est pas présente dans la table « point_analyse ».]] 

[2016-03-17T08:29:21.515+0100] [glassfish 4.1] [ERROR] [] [org.hibernate.engine.jdbc.batch.internal.BatchingBatch] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761515] [levelValue: 1000] [[ 
    HHH000315: Exception executing batch [could not execute batch]]] 

[2016-03-17T08:29:21.517+0100] [glassfish 4.1] [WARNING] [enterprise_distributedtx.before_completion_excep] [javax.enterprise.resource.jta.com.sun.enterprise.transaction] [tid: _ThreadID=35 _ThreadName=http-listener-1(3)] [timeMillis: 1458199761517] [levelValue: 900] [[ 
    DTX5014: Caught exception in beforeCompletion() callback: 
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute batch 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1882) 
    at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:115) 
    at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:50) 
    at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:452) 
    at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:854) 
    at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:719) 
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at com.sun.proxy.$Proxy317.testFk(Unknown Source) 
    at com.okina.analysis.__EJB31_Generated__RouteBrutAnalyserService__Intf____Bean__.testFk(Unknown Source) 
    at com.okina.resources.RoutesWS.testFk(RoutesWS.java:60) 
    at sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$VoidOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:136) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103) 
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute batch 
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129) 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
    at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:132) 
    at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.doExecuteBatch(BatchingBatch.java:111) 
    at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.execute(AbstractBatchImpl.java:163) 
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.executeBatch(JdbcCoordinatorImpl.java:226) 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:482) 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349) 
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350) 
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) 
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222) 
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425) 
    at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:110) 
    ... 65 more 
Caused by: java.sql.BatchUpdateException: L'élément du batch 0 insert into ressources_analyse (route_id, point_id, uri_ressource, id) values (NULL, 1723, NULL, 113) a été annulé. Appeler getNextException pour en connaître la cause. 
    at 
+0

你可以添加底层的SQL语句日志吗? – AdamSkywalker

+0

你试过没有级联'pointAnalyse'上的持久化操作吗?由于关系是多对一的,因此您可能不应该级联删除,否则您可能会尝试删除由其他资源使用的点。 – Thomas

+0

@AdamSkywalker我添加了休眠日志。 – Mat

回答

0

的em.flush(/和查询势力JPA执行的SQL语句。

我假设point_id有一个非空约束。所以它试图做一个没有设置point_id的插入语句。

所以你必须确保你的实体对象模型在刷新或执行查询时是一致的。或者你必须删除非空约束。

如果必须不存在空约束,则必须添加附加条件,则应将可选= false添加到ManyTo One映射中。

+0

point_id列上没有“not null”约束......但应该确实,这个列不能插入空白。在插入时,“point_id”字段不是空的(或者似乎至少不是) – Mat