我试图在我的存储库中创建一个自定义deleteBy方法查询。
似乎休眠而不是删除,而是在执行一条select语句。
public interface ContactRepository extends JpaRepository<Contact, Integer> {
Integer deleteByEmailAddress(String emailAddress);
//and this one works
Contact findContactByName(String name);
}
这是Hibernate试图做的事情:
我想念什么?我必须进行特殊配置才能使删除工作吗?
最佳答案
删除无法正常工作还是无法正常工作?通常,在删除实体之前必须对其进行管理,因此JPA提供程序(在您的情况下为休眠)将首先加载(您看到的查询)实体,然后发出删除操作。
如果您只看到查询,但没有看到相应的删除,则可能是:
deleteByEmailAddress
的东西就是事务性注意:使用修改查询删除操作删除实体时,可以避免选择,例如:
// NOTE: you have return void
@Modifying
@Transactional
@Query(value="delete from Contact c where c.emailAddress = ?1")
void deleteByEmailAddress(String emailAddress)