【问题标题】:How to create a general query in JPA?如何在 JPA 中创建通用查询?
【发布时间】:2019-07-22 02:53:17
【问题描述】:

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

【问题讨论】:

  • 你正在使用 Spring Data 你已经继承了一个方法 findOne(id) 所以使用它。

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


【解决方案1】:

根据您的问题,我假设您不想在所有存储库中使用 .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()

【讨论】:

    【解决方案2】:

    有一个传递表名的方法。注入必要的存储库。根据表名调用 findAll。您可以从结果中获取 id。

    【讨论】:

    • 对不起,我没有完全理解你!你能给我举个例子吗?
    猜你喜欢
    • 2021-06-17
    • 2017-11-25
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2020-02-26
    • 2012-04-29
    相关资源
    最近更新 更多