gpt4 book ai didi

java - 如何添加自定义列名称Spring Data JPA?

转载 作者:行者123 更新时间:2023-12-02 22:31:38 25 4
gpt4 key购买 nike

我的数据库中有很多列,并且不想为所有列编写自定义查询,因此请考虑对我给出的每个列名称动态运行以下方法:column_name。这样的事情可能吗?还是有其他方法可以做到这一点?

      @Query("select #column_name from Item Where #column_name like %?2% ")
List<Item> getUniqueColumn(String column_name,String column_text);

顺便说一句,在 spring 文档中没有提到这种情况。

最佳答案

您只能将期望作为参数的值传递给 HQL 查询。您不能传递列名或表名。

Hibernate 在这里基本上是使用 PreparedStatement 工作的,并且在尚不知道要查询的表/列的情况下无法准备语句。

您必须编写一些字符串替换逻辑或使用 Criteria API 构建查询

List<Object> getUniqueColumn(String column_name,String column_text){
StringBuilder query = new StringBuilder();
query.append("select #column_name ");
query.append("from Item ");
query.append("where #column_name like %?1%");

query = query.toString("#column_name", column_name);

session.createQuery(query).setString(1, column_text).list();
}

还要记住,您在这里所做的是投影,您不会得到项目列表,而是对象列表。

关于java - 如何添加自定义列名称Spring Data JPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com