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