Skip to content

Commit b948ba9

Browse files
authored
Add the selectAsRow method to NativeSql DSL (#723)
1 parent 8ca92b7 commit b948ba9

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

docs/criteria-api.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,15 @@ The above query issues the following SQL statement:
454454
Up to 9 numbers, the column results are held by ``Tuple2`` to ``Tuple9``.
455455
For more than 9 numbers, the results are held by ``Row``.
456456

457+
You can get a ``Row`` list explicitly by using ``selectAsRow`` as follows:
458+
459+
.. code-block:: java
460+
461+
Employee_ e = new Employee_();
462+
463+
List<Row> list =
464+
nativeSql.from(e).selectAsRow(e.employeeName, e.employeeNo).fetch();
465+
457466
Column projection and mapping (Entityql, NativeSql)
458467
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
459468

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/NativeSqlSelectStarting.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,21 @@ public SetOperand<Row> select(
747747
for (int i = 0; i < propertyMetamodels.length; i++) {
748748
Objects.requireNonNull(propertyMetamodels[i], "propertyMetamodels[" + i + "]");
749749
}
750+
return selectAsRowInternal(propertyMetamodel, propertyMetamodels);
751+
}
752+
753+
public SetOperand<Row> selectAsRow(
754+
PropertyMetamodel<?> propertyMetamodel, PropertyMetamodel<?>... propertyMetamodels) {
755+
Objects.requireNonNull(propertyMetamodel);
756+
Objects.requireNonNull(propertyMetamodels);
757+
for (int i = 0; i < propertyMetamodels.length; i++) {
758+
Objects.requireNonNull(propertyMetamodels[i], "propertyMetamodels[" + i + "]");
759+
}
760+
return selectAsRowInternal(propertyMetamodel, propertyMetamodels);
761+
}
762+
763+
private SetOperand<Row> selectAsRowInternal(
764+
PropertyMetamodel<?> propertyMetamodel, PropertyMetamodel<?>... propertyMetamodels) {
750765
List<PropertyMetamodel<?>> list = new ArrayList<>(1 + propertyMetamodels.length);
751766
list.add(propertyMetamodel);
752767
list.addAll(Arrays.asList(propertyMetamodels));

doma-kotlin/src/main/kotlin/org/seasar/doma/jdbc/criteria/statement/KNativeSqlSelectStarting.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,14 @@ class KNativeSqlSelectStarting<ENTITY>(private val statement: NativeSqlSelectSta
291291
return KNativeSqlSelectIntermediate(setOperand)
292292
}
293293

294+
fun selectAsRow(
295+
propertyMetamodel: PropertyMetamodel<*>,
296+
vararg propertyMetamodels: PropertyMetamodel<*>?
297+
): KSetOperand<Row> {
298+
val setOperand = statement.selectAsRow(propertyMetamodel, *propertyMetamodels)
299+
return KNativeSqlSelectIntermediate(setOperand)
300+
}
301+
294302
fun <RESULT> selectTo(
295303
entityMetamodel: EntityMetamodel<RESULT>?,
296304
vararg propertyMetamodels: PropertyMetamodel<*>?

0 commit comments

Comments
 (0)