Я хочу загрузить данные в объект гибернации, запустив что-то вроде select * from <table> where id = ?
. Меня интересуют только данные, находящиеся в <table>
- нет вообще.
Я могу добиться этого, используя следующее:
T result = (T) getSession()
.createSQLQuery("SELECT * FROM " + tableName + " WHERE " + idColumn + " = ?")
.setInteger(0, id)
.setResultTransformer(new AliasToBeanResultTransformer(type))
.uniqueResult();
Но это работает только для сущностей, у которых нет отношений. Для любого объекта, имеющего отношение к другому, я получаю PropertyNotFoundException
, когда преобразователь результатов пытается установить какое-либо свойство <relationshipName>_id
на моем объекте (например, org.hibernate.PropertyNotFoundException: Could not find setter for administration_id on class com.xxxxxx.xxxx.model.AdministrationPIN
Есть ли другие трансформаторы, которые могли бы с этим справиться автоматически. Или, возможно, какой-то связыватель объектов, который можно было бы использовать из карты сущностей, если бы вместо этого я использовал преобразователь результатов Criteria.ALIAS_TO_ENTITY_MAP
?
Обновить. Важно, чтобы все данные, содержащиеся в таблице, были загружены в объект, включая данные о взаимосвязях. Таким образом, если объект A
имеет OneToOne с объектом B
, и я загружаю объект A
с помощью этого метода, a.getB()
должен возвращать экземпляр B
, но экземпляр B
должен только быть заполнен его идентификатором.
FETCH
политику вы нарушили. Если всегдаLAZY
, чем «да», ни объединения, ни дополнительные выборки выполняться не будут. - person Antoniossss   schedule 30.09.2014FETCH
- например, отношения OneToOne требуют специальной конфигурации, которая должна быть установлена какLAZY
- person jlb   schedule 30.09.2014LAZY
выборку, и они должны извлекаться при необходимости вFETCH
режиме запроса. Невозможно отключитьEAGAR
получение объявленных файлов сопоставления im или аннотаций (я не слышал о таком) - person Antoniossss   schedule 30.09.2014LAZY
- это более специфичная для приложения конфигурация, которая не соответствует моим потребностям. - person jlb   schedule 30.09.2014