3 回答
TA贡献1900条经验 获得超5个赞
如果您需要从资源文件夹中加载 SQL,您可以尝试使用spring-data-sqlfile库。它支持从资源加载 SQL 查询。所以你只需要将你的 SQL 查询放到资源文件夹中,然后你就可以在 SqlFromResource 注释中引用它们:
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
@SqlFromResource(path = "select_user_by_id.sql")
User findById(int userId);
}
输出将类似于:
@Repository
public interface UserRepositoryGenerated extends JpaRepository<User, Integer> {
@Query(
value = "SELECT * FROM users WHERE id = :userId",
nativeQuery = true
)
User findById(int userId);
}
TA贡献1796条经验 获得超7个赞
不幸的是,spring 数据似乎不支持@Query anno 的直接属性引用(如@Value)。尽管如此,假设您使用 spring-data-jpa 和 Hibernate,则可以使用外部 .xml 文件将您的查询存储为命名查询,并通过方法名称或类似方式引用它们
@Query(nativeQuery = true, name="Repository1.query1")
这是一篇关于这个问题的好文章:XML 文件中的 JPA 查询,它描述了如何将 .xml 文件放在预期的 orm.xml 之外的其他地方
添加回答
举报