【问题标题】:How to solve error " error in your SQL syntax" in JPA for custom repository如何解决自定义存储库的 JPA 中的错误“SQL 语法错误”
【发布时间】:2019-12-14 13:45:01
【问题描述】:

我正在使用 Spring Boot 开发应用程序。在使用 JPA 时,我在 SQL 语法中遇到错误。

public interface ReservoirRepository extends CrudRepository<Reservoir, Integer> {

    @Query(value = "From reservoir where patientID = ?1", nativeQuery = true)
    public List<Reservoir> findByPatientId(Integer patientId);
}

这是 MySQL 表和数据

错误描述是这样的

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'From reservoir where patientID = 1' at line 1

请帮助我,我没有弄明白这里有什么问题。谢谢:)

【问题讨论】:

    标签: java mysql spring-boot jpa spring-data-jpa


    【解决方案1】:

    编写完整的 sql 命令,作为其本机查询。喜欢 @Query(value = "SELECT * FROM Reservoir res where res.patientID = ?1", nativeQuery = true)

    【讨论】:

    • 感谢@Madhav,它成功了。如果你不介意我想问一个问题。我只想要表中的级别值,所以我写了这样的公共接口 ReservoirRepository extends CrudRepository { @Query(value = "Select res.reservoirId, res.level From res.patientID = ?1 and res. type = ?2", nativeQuery = true) public List findByPatientIdAndType(Integer patientId, Integer type);但我得到了异常,因为声明“java.sql.SQLException:找不到列'患者ID'”。如果你能帮我得到这个,那就太好了。谢谢
    • AND 在上面的查询执行中,即使我添加了注释 @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore @JoinColumn(name = "patientID") private,我也得到了包括患者对象在内的完整水库对象病人病人;在水库类。那么为什么它不起作用呢?
    • 就您读取特定列而不是整行的要求而言,它不可能按照您的方式进行,因为结果和 java 对象映射将不起作用。我没有具体的答案,请阅读这个:stackoverflow.com/questions/22007341/…
    • 对于第二个,我也没有任何具体的答案,尤其是因为我看不到完整的声明和配置。同样,如果您关注了任何文章/博客,请重新检查您的实现以检查是否缺少任何内容。或探索有关 spring data jpa 延迟加载的文章
    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 2012-12-07
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多