【发布时间】:2016-05-16 21:38:56
【问题描述】:
所以我试图从数据库中删除一个休眠实体,但它给了我一个错误,说该表不存在。查找实体并保存更改或创建新实体似乎没有任何问题 - 它只会在删除实体时抱怨。
此代码会导致错误提示该表不存在。
try
{
Transaction txn = s.beginTransaction();
Resource r = (Resource) s.get(Resource.class, rid);
s.delete(r);
txn.commit();
}
此代码将实体从数据库中拉出并打印 ID 没有问题。
try
{
Transaction txn = s.beginTransaction();
Resource r = (Resource) s.get(Resource.class, rid);
System.out.println(r.getId());
txn.commit();
}
控制台输出
Hibernate:
select
resource0_.id as id1_1_0_,
resource0_.bookable as bookable2_1_0_,
resource0_.description as descript3_1_0_,
resource0_.name as name4_1_0_
from
resources resource0_
where
resource0_.id=?
Hibernate:
delete
from
resources_resources
where
resources_id=?
2016-02-07 02:27:13.831 WARN 8396 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S02
2016-02-07 02:27:13.831 ERROR 8396 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : Table 'bargaink_megtest.resources_resources' doesn't exist
2016-02-07 02:27:13.831 INFO 8396 --- [nio-8080-exec-8] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements
我不知道当它在添加新实体和更新现有实体时可以非常清楚地看到表格时会发生这种情况。谁能解释这里发生了什么?
谢谢
【问题讨论】:
-
这是在同一会话中进行还是在不同会话中进行?
-
@KenBekov 它的代码相同,我只是更改了这一行以测试它是否正在恢复原来的实体
-
您是否尝试使用 HQL 查询删除实体?
-
@KenBekov 刚刚尝试了 HQL,仍然返回相同的错误:/
-
选择并删除生成的指向不同表的 SQL。检查班级。你有可能有2个不同的类(进口)吗?检查任何可能生成 SQL 的拦截器
标签: java mysql spring hibernate innodb