Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何添加自定义列名Spring数据JPA?_Java_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java 如何添加自定义列名Spring数据JPA?

Java 如何添加自定义列名Spring数据JPA?,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,我的数据库中有很多列,不想为所有的用户写自定义查询,所以请考虑下面的方法,为每个列名称动态运行。这样的事情可能发生吗?或者有其他的方法吗 @Query("select #column_name from Item Where #column_name like %?2% ") List<Item> getUniqueColumn(String column_name,String column_text); 顺便说一句,在spring documantati

我的数据库中有很多列,不想为所有的用户写自定义查询,所以请考虑下面的方法,为每个列名称动态运行。这样的事情可能发生吗?或者有其他的方法吗

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

顺便说一句,在spring documantation中没有提到这个例子。

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

Hibernate在这里基本上使用PreparedStatement,如果查询的表/列未知,则无法准备语句

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

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();
}

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

不清楚您想要什么。。。请添加详细信息我编辑了我的问题;我的数据库中有很多列,不想为所有的用户编写自定义查询,所以请考虑上面的方法为每个列名称动态运行,有可能吗?使用Eclipse自动生成实体you@C.T.我根本不是这方面的专家,所以可能有更好的方法,但是,只要您不希望您的列经常更改,您就可以维护一个配置文件,甚至是另一个具有列名的db表,并从中提取来构建每个列query@ScaryWombat如何使用?使用spring数据规范,可以将列名作为参数“传递”。我在这里举个例子,