代码之家  ›  专栏  ›  技术社区  ›  skyman

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

  •  0
  • skyman  · 技术社区  · 6 年前

    我有一个抽象类:

    @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 回复  |  直到 6 年前
        1
  •  2
  •   Amit Naik    6 年前

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