gpt4 book ai didi

java - spring-data-jdbc deleteBy 方法返回异常结果类型

转载 作者:行者123 更新时间:2023-12-05 01:07:05 25 4
gpt4 key购买 nike

我尝试在这样的 spring-data-jdbc 存储库中声明和使用 deleteBy 方法

public interface TokenRepository extends CrudRepository<OpToken, Long> {
void deleteByBreed(Long breed);
}

当我尝试调用方法时

private TokenRepository tokenRepository;
...
...
tokenRepository.deleteByBreed(123L);

我遇到异常:MethodNotFoundException:

java.lang.NoSuchMethodException: void.()

我决定,删除方法应该返回它处理的行数。所以,我像这样重写我的存储库界面

public interface TokenRepository extends CrudRepository<OpToken, Long> {
long deleteByBreed(Long breed);
}

但现在我有另一个异常(exception):org.springframework.jdbc.IncorrectResultSetColumnCountException:列数不正确:预期为 1,实际为 4

它看起来像是方法返回实体或它试图删除的实体列表。但我不需要它们。在我的情况下如何声明此方法?

按实体看起来像这样:

@Data
public class OpToken implements Persistable<Long> {

@Transient
private boolean newEntity;

@Id
@Column("jti")
private Long jti;

@Column("breed")
private Long breed;

@Column("id_account")
private Long idAccount;

@Column("exp")
private Date exp;

@Override
public Long getId() {
return jti;
}

@Override
public boolean isNew() {
return newEntity;
}
}

最佳答案

当前版本尚不支持派生删除查询。观看https://github.com/spring-projects/spring-data-jdbc/issues/771当这种变化时得到通知。

@MadMax 提供的解决方案是正确的:使用了专用查询:

@Modifying
@Query("delete from account.op_token t where t.breed = :breed")
void deleteByBreed(@Param("breed") Long breed);

关于java - spring-data-jdbc deleteBy<field> 方法返回异常结果类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67916289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com