spring-data-jpa - 使用 @Query 搜索从抽象类派生的 UUID 时出现异常
问题描述
我有一个抽象类:
@Column(name = "uuid", nullable = false, unique = true, updatable = false, length = 36)
private String uuid;
public UUID getUuid() {
if (uuid == null) {
return null;
}
return UUID.fromString(uuid);
}
public void setUuid(UUID uuid) {
this.uuid = uuid.toString();
}
然后是一个实体:
@Entity
@Table(name = "creatinine")
public class Creatinine extends AbstractEntity {
和存储库
public interface CreatinineRepository extends JpaRepository<Creatinine, Long> {
@Query("SELECT m FROM Creatinine m WHERE m.uuid = :uuid")
public Creatinine find(String uuid);
}
但是,应用程序抛出“您试图设置此查询字符串中不存在的参数”异常。
我已经将查询中的 uuid 作为字符串和 UUID 传递,在这两种情况下都有相同的异常。我在这里缺少什么吗?
解决方案
我认为在使用命名参数时需要添加@Param
public interface CreatinineRepository extends JpaRepository<Creatinine, Long> {
@Query("SELECT m FROM Creatinine m WHERE m.uuid = :uuid")
public Creatinine find(@Param("uuid") String uuid);
}
如果您正在使用Java 8
或更好地确保使用 -parameters 进行编译,以避免命名参数的 @Param 注释。
推荐阅读
- reactjs - Firebase 身份验证提供程序数据在使用社交帐户登录时提供电子邮件 null
- c++ - Dev-C++ 没有显示该程序的 ant 输出
- r - 模型的聚集标准误
- postgresql - 使用日期时间字符串的 PostgreSQL 全文搜索
- django - 使用 Django 中的其他表填充表
- intel - 什么是内在序列函数?
- django - Requests_html scraper 在 django 中调用异步:“线程 %r 中没有当前事件循环。”
- html - 如何创建从引导容器开始的位置开始的带有文本的全宽横幅?
- python - Pymongo 存储了没有 db.eval() 的 Javascript 函数
- python - 在熊猫中获取单元格值