Split ResultTransformer into TupleTransformer and ResultListTransformer

Description

Usages of ResultTransformer were deprecated in 5.2. For 6.0 let's develop the better way to apply this idea, splitting this into 2 distinct functional contracts: TupleTransformer and ResultListTransformer.

There is some uncertainty we need to clarify with regards to how TupleTransformer and RowTransformer play together when the query is "typed".

The "highest level" of transformation is the type defined for a TypedQuery which defines the type of the individual "rows" returned by the Query to the user. This resultType may be:

  1. Object[].class to indicate that an Object[] should be the row type (so-called "pass thru" transformer).

  2. Tuple.class which indicates that the results should be wrapped in a JPA Tuple

  3. Some other value which indicates the expected row type. This is limited to cases where either:

    1. the query defined a single "select expression" and the resultType names the type of that selection

    2. the user supplied a TupleTransformer and the resultType names that TupleTransformer return type.

For example:

Some that we specifically need to decide on:

Environment

None

Assignee

Steve Ebersole

Reporter

Steve Ebersole

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Priority

Major
Configure