Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JPA存储库中的自定义SQL查询_Hibernate_Jpa_Spring Boot - Fatal编程技术网

Hibernate JPA存储库中的自定义SQL查询

Hibernate JPA存储库中的自定义SQL查询,hibernate,jpa,spring-boot,Hibernate,Jpa,Spring Boot,对于以下查询: @Query("SELECT fd FROM DPPFile fd WHERE fd.ID= ':ID'") List<DPPFile> findByID(@Param("ID")String ID/); 如果我使用?1而不是命名参数方法,则会出现此异常。使用?1也会失败,所以我不确定这里出了什么问题。 DPPFile类有一个名为ID的成员以及getter/setter (我之所以不使用默认的“findByID”而不在其上添加任何查询函数,是因为我想用其他参数扩展查

对于以下查询:

@Query("SELECT fd FROM DPPFile fd WHERE fd.ID= ':ID'")
List<DPPFile> findByID(@Param("ID")String ID/);
如果我使用?1而不是命名参数方法,则会出现此异常。使用?1也会失败,所以我不确定这里出了什么问题。 DPPFile类有一个名为ID的成员以及getter/setter


(我之所以不使用默认的“findByID”而不在其上添加任何查询函数,是因为我想用其他参数扩展查询)

不要将参数放在单引号中,否则它将作为文本解析。因此查询将不会被注册。

作为替代解决方案,您可以使用spring数据
findOne
跳过整个
@query
注释,前提是
ID
是实体中的唯一标识符。否则,您可以依赖spring数据从方法名称生成查询。使用类似以下内容:

@Entity
public class DPPFile {

  @Id
  private Integer identifier;

  private Integer ID;
}

public interface DPPFileRepository extends Repository< DPPFile, Integer> {

   List<DPPFile> findByID(String ID);
}
@实体
公共类DPPFile{
@身份证
私有整数标识符;
私有整数ID;
}
公共接口DPPFileRepository扩展存储库{
列表findByID(字符串ID);
}

请参见

为什么要将参数放在单引号中?这意味着它将被解释为一个字符串:ID'Aaargh!就这样。Pfff,我已经研究这个问题一个小时了,它一直在我眼前。谢谢,这是正确的答案
@Entity
public class DPPFile {

  @Id
  private Integer identifier;

  private Integer ID;
}

public interface DPPFileRepository extends Repository< DPPFile, Integer> {

   List<DPPFile> findByID(String ID);
}