【发布时间】:2015-06-03 11:01:51
【问题描述】:
我们正在使用 JPA(休眠)和 Postgres,
其中一个删除操作抛出错误“错误:列数 (1703) 超出限制 (1664)”
delete 方法如下所示,我们将 clazz 对象作为所有实体的父对象。
protected <E extends T> E delete(UUID id, Class<E> clazz) {
log.debug("deleting entity {}", id);
E object = getEntityManager().find(clazz, id); //clazz is parent of all the entities
if (object != null){
getEntityManager().remove(object);
}
return object;
}
请指教
有类似的问题here,但没有具体答案?
谢谢
【问题讨论】:
-
如果某些 SQL 语句抛出异常,那么您不认为显示 SQL 语句会很好吗? (将出现在日志中)。堆栈跟踪也会说明调用了什么,因此它在做什么
-
我的 SQL 语句非常大,很抱歉由于某些原因我无法发布整个 sql 查询。
-
我认为调用
find()时会抛出异常,因为有很多急切的关系。作为一种解决方法,请尝试使用getReference()而不是find(),例如E object = getEntityManager().getReference(clazz, id); -
似乎Hibernate中的PostgreSQL方言应该足够聪明来处理这个问题,但我想不是。
-
如果不需要级联,是否可以使用
delete查询?
标签: hibernate postgresql jakarta-ee jpa hibernate-mapping