使用@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 注释。
我有一个摘要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 注释。