<bdo id='GPe13'></bdo><ul id='GPe13'></ul>

    <small id='GPe13'></small><noframes id='GPe13'>

      <legend id='GPe13'><style id='GPe13'><dir id='GPe13'><q id='GPe13'></q></dir></style></legend>

      1. <i id='GPe13'><tr id='GPe13'><dt id='GPe13'><q id='GPe13'><span id='GPe13'><b id='GPe13'><form id='GPe13'><ins id='GPe13'></ins><ul id='GPe13'></ul><sub id='GPe13'></sub></form><legend id='GPe13'></legend><bdo id='GPe13'><pre id='GPe13'><center id='GPe13'></center></pre></bdo></b><th id='GPe13'></th></span></q></dt></tr></i><div id='GPe13'><tfoot id='GPe13'></tfoot><dl id='GPe13'><fieldset id='GPe13'></fieldset></dl></div>
        <tfoot id='GPe13'></tfoot>
      2. 选择特定列的 Spring Data JPA 规范

        时间:2024-08-24

            <small id='gsXub'></small><noframes id='gsXub'>

              <tbody id='gsXub'></tbody>

          1. <i id='gsXub'><tr id='gsXub'><dt id='gsXub'><q id='gsXub'><span id='gsXub'><b id='gsXub'><form id='gsXub'><ins id='gsXub'></ins><ul id='gsXub'></ul><sub id='gsXub'></sub></form><legend id='gsXub'></legend><bdo id='gsXub'><pre id='gsXub'><center id='gsXub'></center></pre></bdo></b><th id='gsXub'></th></span></q></dt></tr></i><div id='gsXub'><tfoot id='gsXub'></tfoot><dl id='gsXub'><fieldset id='gsXub'></fieldset></dl></div>
          2. <legend id='gsXub'><style id='gsXub'><dir id='gsXub'><q id='gsXub'></q></dir></style></legend>

                <bdo id='gsXub'></bdo><ul id='gsXub'></ul>
              • <tfoot id='gsXub'></tfoot>

                  本文介绍了选择特定列的 Spring Data JPA 规范的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我们可以通过在我们的存储库接口中编写自定义@Query 方法来选择特定的列.但是,我不想为不同的属性写这么多方法.

                  We can select specific columns by writing custom @Query methods in our Repository Interface. However, I don't want to write so many methods for different properties.

                  我试过了,但它总是返回整个对象.

                  I tried this, but it returns the entire object all the time.

                  public class MySpecifications {
                  
                      public static Specification<MyInfo> propertiesWithId(final String[] properties, final Object id, final String idProperty)
                      {
                  
                          return new Specification<MyInfo>() {
                  
                              @Override
                              public Predicate toPredicate(Root<MyInfo> root,
                                      CriteriaQuery<?> query, CriteriaBuilder cb) {
                  
                                  query = cb.createTupleQuery(); //tried cb.createQuery(MyInfo.class); as well
                  
                                  List<Selection<? extends Object>> selectionList = new ArrayList<Selection<? extends Object>>();
                  
                                  for (String property : properties) {
                  
                                      Selection<? extends Object> selection = root.get(property);
                  
                                      selectionList.add(selection);
                                  }
                  
                                  return query.multiselect(selectionList).where(cb.equal(root.get(idProperty), id)).getRestriction();
                              }
                  
                          };
                      }
                  }
                  

                  用作:

                  MyInfo findOne(Specification(properties,idValue, idProperty));
                  

                  这是正确的方法吗?哪里错了?

                  Is this the correct way? Where is the mistake?

                  推荐答案

                  目前的spring data jpa规范执行器仅限于where子句中的条件,所以你不能改变选中的列,它隐含地仅限于完整实体(查看 JpaSpecificationExecutor 接口文档).您必须使用自定义存储库实现,或者转移到命名查询-

                  The current spring data jpa specification executor is limited to criteria in the where clause, so you can't change the selected columns, it's implicitely limited to full entities only (take a look at JpaSpecificationExecutor interface documentation). You'll have to go with a custom repository implementation, or move to named queries-

                  春天数据 JPA 和 Querydsl 使用 bean/构造函数投影获取列子集

                  这篇关于选择特定列的 Spring Data JPA 规范的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Spring/@Transactional 与 AspectJ 完全被忽略 下一篇:列名作为 Spring Data JPA Query 的参数

                  相关文章

                  <legend id='XyGe1'><style id='XyGe1'><dir id='XyGe1'><q id='XyGe1'></q></dir></style></legend>

                    1. <i id='XyGe1'><tr id='XyGe1'><dt id='XyGe1'><q id='XyGe1'><span id='XyGe1'><b id='XyGe1'><form id='XyGe1'><ins id='XyGe1'></ins><ul id='XyGe1'></ul><sub id='XyGe1'></sub></form><legend id='XyGe1'></legend><bdo id='XyGe1'><pre id='XyGe1'><center id='XyGe1'></center></pre></bdo></b><th id='XyGe1'></th></span></q></dt></tr></i><div id='XyGe1'><tfoot id='XyGe1'></tfoot><dl id='XyGe1'><fieldset id='XyGe1'></fieldset></dl></div>

                    2. <small id='XyGe1'></small><noframes id='XyGe1'>

                      <tfoot id='XyGe1'></tfoot>
                        <bdo id='XyGe1'></bdo><ul id='XyGe1'></ul>