我必须删除所有匹配ID的记录,只有一个除外。我没有可以考虑的dat列。 dtatastruchtur e如下所示:
OBJECT_ID - primary key
DOC_ID
FIRST NAME
LAST NAME
我正在尝试删除所有与特定号码匹配的doc_ID
,除了一个到jpa。找不到任何JPA特定功能。我正在实现JPARepository。全部删除,有什么办法可以实现?
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
public User save(User user);
public void deleteAllByDocID(String docID);
}
更新:对不起不确定数据库:我们正在使用DB2,我试图写下这些查询:
DELETE FROM USR WHERE OBJ_ID NOT IN (SELECT OBJ_ID FROM USR WHERE DOC_OBJ_ID='91298' FETCH FIRST 1 ROWS ONLY); - this gives me error transaction log is full.
此:
DELETE FROM USR WHERE OBJ_ID NOT IN (SELECT TOP(1) OBJ_ID FROM USR WHERE DOC_OBJ_ID='91298'); - and this give me error TOP is not a function
答案 0 :(得分:1)
您可以先COUNT
个匹配记录,然后再使用LIMIT N-1
删除
答案 1 :(得分:1)
如果您不想使用自定义查询,可以这样做:
在存储库中定义这两种方法
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findFirstByDocIDOrderByObjectIDAsc(String docID);
void deleteAllByDocIDAndObjectIDNot(String docID, Long objectID);
}
然后在您的服务层执行此操作
User user = repository.findFirstByDocIDOrderByObjectIDAsc(docID);
if(user !=null) deleteAllByDocIDAndObjectIDNot(docID, user.objectID);
请注意,由于此解决方案使用派生的删除查询,因此它将逐个删除记录。