Új hozzászólás Aktív témák

  • togvau

    senior tag

    válasz floatr #10990 üzenetére

    Most kellett :)
    Linkeltem fent a bugot, ami valahol van... exception alapján spring data-ban van, de a workaround az egy criteriaquery, aminél nem jelentkezik ugyan az a bug:

    @Query("select p.id from Photo p where p.user = ?1")
    List<Long> findIdsByUserId(long id, boolean restricted);
    Ez elhasal, a linkelthez hasonló: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [34] did not match expected type... -al

    Míg ugyan az a lekérdezés (kicsit még kibővítve), criteriaqueryvel, ugyan olyan metódusparaméterekkel, fut ahogy kell:
     public List<Long> findIdsByUserId(long id, boolean restricted) {
      var cb= em.getCriteriaBuilder();
      var ids=cb.createQuery(Long.class);
      var root=ids.from(Photo.class);
      ids.select(cb.construct(Long.class, root.get("id")));
      var pred= new ArrayList<Predicate>();
      pred.add(cb.equal(root.get("user"), id));
      if (!restricted) pred.add(cb.equal(root.get("restricted"), false));
      ids.where(pred.toArray(new Predicate[pred.size()]));
      return em.createQuery(ids).getResultList();
     }

    fura. user= User entity kapcsolat, ami DB-ben egy BIGINT-et jelent user_id mezőben.

Új hozzászólás Aktív témák