java - 使用 JPA 进行存储库调用,其中表名是 SQL 中的关键字
问题描述
我正在尝试使用 JPA 在我的微服务中编写存储库调用,现在的问题是我尝试对其进行存储库调用的表名是 SQL 中的保留关键字,即“CASE”
目前为了克服这个问题,我们正在我们的存储库中编写这样的本机查询
@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 中查找与此类似的问题,但我看到的建议是 Table 的名称需要更改,但因为在我们的例子中,这个表在很多地方都被使用,所以不能冒险的更改名称。
任何关于我们如何克服这个问题的提示都值得赞赏。
解决方案
您必须在表的名称中使用双引号,以便从字面上获取名称。在您的实体类中,您应该使用以下内容:
@Entity
@Table(name = "\"case\"")
public class Case {
}
推荐阅读
- perl - 如何让 Alien 使用现有的 tarball 而不是下载?
- javascript - 如何使用 Angular 8 为某些回调(传单库)提供事件处理程序
- sql - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表“电影”中插入标识列的显式值
- angular - 带有 plesk 的身份服务器:找不到主题为“CN=SigningCertificate”的有效证书
- javascript - 仅显示表中选定的行,其他行将在同一时间使用 Javascript 隐藏
- django - 如何在 django 中由两个不同的用户使用一个视图?
- android - 显示通话记录中所有未保存/未知电话号码的列表
- azure - 无法在 Azure 数据工厂中的我的 github 组织中选择私有存储库
- php - php中的preg_replace删除多次在sting中的标签
- calendar - 如何按特定日期或日期范围加载 tui-calendar