mysql - 如何在 JPA 中创建通用查询?

标签 mysql sql database spring-boot spring-data-jpa

在我数据库的每个表中,我都有一个名为 table_id 的列。 为了获得这个值,我需要在每个存储库中创建一个方法,即 getTableId() ...。有没有一种方法我必须创建一次方法 getTableId 并从不同的类调用它。我想到了像@Query(Select n.table_id from :myClass n) 这样的查询。

最佳答案

根据您的问题,我假设您不想在所有存储库中使用 .findAll()、.findById() 并且只想使用一次,并且想编写如下查询。

public interface XXXRepository extends CrudRepository<XXX, Integer> {
@Query(value = "select * from ?1 where ...", nativeQuery = true)
List<XXX> findByXXX(String tableName, ...);
}

这里你只能在where..后面使用查询参数,这意味着你不能使用查询参数作为表名。

是的,如果您的实体中有一个 @Table(name="tableName") 注释,您可以获得如下表名称。

yourEntityClassName.class.getAnnotation(Table.class).name()

关于mysql - 如何在 JPA 中创建通用查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921488/

相关文章:

MySQL:从 MySQL 过程调用获取结果

mysql - 将简单的外键约束添加到我的表中

python - Pypika:是否可以动态更改where子句中的运算符

sql - 我应该将 Users 和 Staff 存储在同一张表中吗?

php - CakePHP 将 hasMany 关系与不同的索引链接起来

mysql - 如何减去特定表值中用户输入的值?

mysql - 汇总具有相同 ID/作业编号的列

c# - 如何欺骗更新身份列?

json - 机器学习友好的数据组织

php - 使用类别 ID 分页