使用@Query搜索从抽象类派生的UUID时发生异常

时间:2018-10-02 02:44:15

标签: spring-data-jpa spring-data eclipselink jpql

我有一个抽象类,

@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,但都存在相同的例外。这里有我想念的东西吗?

1 个答案:

答案 0 :(得分:2)

我认为使用命名参数时需要添加@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注释。