使用JPA调用存储库,其中表名是SQL中的关键字



我正试图使用JPA在我的微服务中编写存储库调用,现在的问题是,我试图使存储库调用的表名称是SQL中的保留关键字,即。"案例">

目前,为了克服这个问题,我们正在我们的存储库中编写一个像这样的本地查询

@Repository
public interface CaseRepository extends JpaRepository<Case, Long> {
@Query(value = "Select * from cft."case" where id = :idCase", nativeQuery = true)
Case findCaseById(Long idCase);
}

因为这不是一个好方法,所以我试图删除nativeQuery并试图做这样的事情

@Repository
public interface CaseRepository extends JpaRepository<Case, Long> {
@Query("select c from Case c where c.id = :idCase")
Cases getCaseById(Long idCase);
}

但是这段代码给出了一个错误,因为Case是一个保留关键字。为此,我试图在stackoverflow中寻找类似的问题,但我看到的建议是,表的名称需要更改,但由于在我们的情况下,这个表在很多地方被使用,所以不能冒更改名称的风险。

任何关于我们如何克服这个问题的提示都是非常感谢的。

您必须在表的名称中使用双引号,以便它按照字面意思使用名称。在您的实体类中,您应该使用如下内容:

@Entity
@Table(name = ""case"")
public class Case {
}

相关内容

  • 没有找到相关文章

最新更新