#2015 - Dto instance id fields are not populated when queried using DtoQuery (and no select clause is specified)

This commit is contained in:
rob bygrave
2020-05-27 22:05:39 +12:00
parent f97359502b
commit cbdf5609b2
5 changed files with 82 additions and 7 deletions
@@ -788,7 +788,7 @@ public interface SpiQuery<T> extends Query<T>, TxnProfileEventCodes {
/**
* Set to true when we only include the Id property if it is explicitly included in the select().
*/
void setManualId(boolean manualId);
void setManualId();
/**
* Set default select clauses where none have been explicitly defined.
@@ -47,7 +47,7 @@ public final class DtoQueryRequest<T> extends AbstractSqlQueryRequest {
SpiQuery<?> ormQuery = query.getOrmQuery();
if (ormQuery != null) {
ormQuery.setType(type);
ormQuery.setManualId(true);
ormQuery.setManualId();
// execute the underlying ORM query returning the ResultSet
SpiResultSet result = server.findResultSet(ormQuery, trans);
@@ -1715,8 +1715,10 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
}
@Override
public void setManualId(boolean manualId) {
this.manualId = manualId;
public void setManualId() {
if (detail != null && detail.hasSelectClause()) {
this.manualId = true;
}
}
/**