Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1971

HibernateGridDataSource should include some workaround or protection agains wrong Projections.rowCount() result

    XMLWordPrintableJSON

    Details

      Description

      In some cases Hibernate's criteria construction like "criteria.setProjection(Projections.rowCount())" returns wrong number of rows. More specifically, for example, if you have some JPA restrictions in you entity annotations (e.g.
      " @ManyToOne
      @JoinColumn(name = "USER_ID", nullable = false) <---- this one!
      @NonVisual
      public UserImpl user; ")

      then such restrictions (for USER_ID is not null) will not be taken in account while building "row-count" query.

      Vice-versa hibernate will use such restrictions in query for getting LIST of entities.

      This behaivour fails, when in entity table appear (e.g. some old) rows with NULL in "USER_ID" (e.g.) columns.

      This is known, but not solved problem for Hibernate, see:
      https://hibernate.onjira.com/browse/HHH-3238
      https://hibernate.onjira.com/browse/HHH-2787
      https://hibernate.onjira.com/browse/HHH-3206
      https://hibernate.onjira.com/browse/HHH-5719
      https://hibernate.onjira.com/browse/HHH-4829
      https://hibernate.onjira.com/browse/HHH-7438

      There by we go into error in HibernateGridDataSource.getRowValue(int index) method: it throws IndexOutOfBoundsException due to row count number is bigger than actual number of selected rows.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              andremoniy Andrei Arapov
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: