在我数据库的每个表中,我都有一个名为 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/