从表A中选择columnList=>Id1,Id2,Id3,Id4,ID5。
使用结果,我需要从表B中查询。
以下是案例
就像这个案子会变大一样。我想知道如何在Spring Data JPA中实现这一点。它类似于Spring Data JPA中的动态投影。
注意:存储在TableA中的列名在TableB中使用。
理由:如果我能做到这一点,它将很容易拉出数据,这只是我需要的。
我们能使用CriteriaQuery和CriteriaBuilder吗???根据传递的列数,select查询将使用方法调用中传递的值进行构造。我可以将其作为列表传递,并从这个方法调用中获取结果。EntityManager.CreateQuery(criteriaQuery).GetResultList();
我需要一个比这更好的解决方案。
public void getTableBValues(final List<String> columnList) {
final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
final CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createTupleQuery();
final Root<TableB> root = criteriaQuery.from(TableB.class);
// Construct the Selection List to get required columns from TableB
final List<Selection<?>> pathList = columnList.stream().map(p -> {
final Selection<Object> path = root.get(p);
return path;
}).collect(Collectors.toList());
criteriaQuery.multiselect(pathList);
// result will be stored in the result list.
final List<Tuple> resultList = entityManager.createQuery(criteriaQuery).getResultList();
entityManager.close();
}
如果您只有有限数量的不同用途,所以它不是完全动态的,您可以使用投影。
有很多方法可以做到这一点。https://www.bytestree.com/spring/spring-data-jpa-projections-5-ways-return-custom-object/
使用Spring JPA最简单的方法可能如下所示:
@Repository
public interface ClassBRepository extends JpaRepository<ClassB, Long> {
@Query("select b.id1 as id1, b.id2 as id2, b.id3 as id3 from ClassB b")
List<Map<String, Object>> findForUseCase123();
@Query("select b.id4 as id4, b.id5 as id5 from ClassB b")
List<Map<String, Object>> findForUseCase45();
...
}
问题内容: 我有一张表,默认有20列 这20列名为D1 D2 D3 … D20,现在带有选择查询,我想动态添加其他列。例如,对于D21 D22 … D31,我如何编写查询以动态递增添加此列值..最大限制为31,请帮助 缺省表列 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 现在我想在连续性将列添加到D2
问题内容: 我有一个数据库字段名称调用,我正在尝试使用如下所示的变量名称来选择它: 显然,SQL将解释为字符串,而不是数据库的字段,我如何以这种方式将其识别为字段名而不是字符串,可能没有任何select或if语句。 问题答案: 试试这个: 您必须组成一个动态查询,并使用 要在事物的“动态”方面添加更多内容,请使用存储过程。请参见此处的示例: http://www.marten-online.com
我在这里找到了一个解决方案:如何使用ApacheCamel和MongoDB创建动态equals查询? 但这看起来需要做很多工作。难道Camel没有更简单的方法将值传递给MongoDB查询吗?我希望我们能传递Mongo使用的实际find({})语言。 以下是我的工作,一些日志显示了它在做什么:
问题内容: 是否可以遍历这样的表: 变成这个: 目的是选择所有s并将它们用作列。作为行,我喜欢使用所有s。 所有条件: 所有类型 但是如何将它们组合成一个视图或某物。像这样? 如果您喜欢玩数据。这是生成表的脚本: 问题答案: 不幸的是,MySQL没有您基本上想做的功能。因此,您将需要在语句中使用聚合函数: 参见带有演示的SQL Fiddle 现在,如果您要动态执行此操作,这意味着您不知道要转置的列
我想根据我的输入选择列(列表 我知道要选择不同的特定列,我可以使用@Query("SELECT DISTINCT name OF TABLE"),但是,我想给用户选择他们想要的列的灵活性。列表
问题内容: 我正在使用c#中的linq查询遇到一个问题,我的linq查询如下 我有一个 perfmon 类,它包含诸如(id,counter1,counter2 …)之类的属性,现在有20多个计数器,我已经开发了sql查询以根据参数中传递的计数器名称选择id和计数器,例如,如果我已经传递了counter1,它将仅选择id,counter1(重命名为counter) 如果我将在这里使用开关盒,那么它