- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有数据 JPA 的 Postgres 10.8、Java 8 和 Spring Boot 2.1.9 来将我的实体与我的数据库表进行映射。在我的数据库中,我对表进行了分区并使用了继承策略。
我的结构保持这样:
我的实体:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "my_table", schema = "public")
public class MyTableEntity {
@Id
@Column(name = "id")
private Integer
@Column(name = "description")
private String description;
@Column(name = "created_at", updatable = false)
@Convert(converter = LocalDateTimeConverter.class)
private LocalDateTime createdAt;
...
my_table
中保存一些数据时,我收到此错误:
ERROR 32759 --- [nio-8080-exec-5] p.c.l.s.web.error.ErrorControllerAdvice : Unexpected row count: 0; expected: 1; statement executed: HikariProxyPreparedStatement@2106528986 wrapping insert into public.my_table (id, description, created_at) values (10, 'Descripotion ', '2019-12-26 11:56:29.091000-03'); nested exception is org.hibernate.StaleStateException: Unexpected row count: 0; expected: 1; statement executed: HikariProxyPreparedStatement@2106528986 wrapping insert into public.my_table (id, description, created_at) values (10, 'Description', '2019-12-26 11:56:29.091000-03')
org.springframework.orm.ObjectOptimisticLockingFailureException: Unexpected row count: 0; expected: 1; statement executed: HikariProxyPreparedStatement@2106528986 wrapping insert into public.my_table (id, description, created_at) values (10, 'Description', '2019-12-26 11:56:29.091000-03'); nested exception is org.hibernate.StaleStateException: Unexpected row count: 0; expected: 1; statement executed: HikariProxyPreparedStatement@2106528986 wrapping insert into insert into public.my_table (id, description, created_at) values (10, 'Description', '2019-12-26 11:56:29.091000-03') at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:339) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:537) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) at com.mechague.soft.service.impl.MyServiceImpl$$EnhancerBySpringCGLIB$$27b46df5.createItem()
最佳答案
这个问题是在 postgresql 中使用分区时的一个已知问题,解决这个问题是他们目标的一部分 ref
因此,简而言之,hibernate 尝试通过计算受影响的行数来检查插入是否真的完成,但 hibernate 仅识别未执行插入的表“my_table”。
要解决此问题,您应该通过向实体添加以下注释来告诉 hibernate 不检查行数
@SQLInsert(sql =[YOUR_INSERT_QUERY], ResultCheckstyle = ResultCheckStyle.NONE)
关于postgresql - 如何在 Spring Data JPA Entity 和通过继承相关的表之间进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490382/
我是一名优秀的程序员,十分优秀!