使用@Query 搜索从抽象派生的 UUID 时出现异常 class

Exception when using @Query to search for a UUID derived from an abstract class

我有一个摘要class:

@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);
}

但是应用程序抛出 "you have attempted to set a parameter that does not exist in this query string" 异常。

我在查询中将 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 注释。