У меня есть объект value, для которого я хочу отобразить свой собственный набор результатов запросов. Я использую @SQLResultSetMapping
для отображения полей объекта, но когда значение любого столбца null
, исключение бросить:SQLResultSetMapping бросает исключение в случае нулевых столбцов
Exception [EclipseLink-6177] (Eclipse Persistence Services - 2.6.1.v20150916-55dc7c3): org.eclipse.persistence.exceptions.QueryException
Exception Description: The column result [custom_properties] was not found in the results of the query.
Мой Entity Класс и картографии
@Entity
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@Table(name = "account_master")
@SqlResultSetMapping(name = "DTO_MAPPING", classes = @ConstructorResult(
targetClass = AccountDTO.class,
columns = {@ColumnResult(name = "id"),
@ColumnResult(name = "name"),
@ColumnResult(name = "custom_properties")
})
)
public class Account implements Serializable {
// fields, setters and getters
}
Значение объекта:
public class AccountDTO {
public AssetDTO(){
}
public AssetDTO(int id, String name, String customProperties) {
this.id = id;
this.name = name;
this.customProperties = customProperties;
}
}
И заявление об исполнении
List<AccountDTO> accList = entityManager.createNativeQuery("SELECT id, name, custom_properties FROM account_master WHERE acc_hierarchy <@ 2.3", "DTO_MAPPING").getResultList()
Если custom_properties (который является нулевым) заменяется статическим значением в запросе, отображение работает отлично. Что-то не так с реализацией? Поскольку отображение нулевого значения похоже на общий сценарий.
Он работал! Теперь, когда я думаю об этом, информация типа класса аргументов конструктора будет необходима для получения соответствующей конструкции путем отражения. Нулевые столбцы должны указывать на это явно для работы jpa. В конце концов, это может быть не ошибка. – grizzly