使用 @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注释。

最新更新