SELECT * в объект гибернации без заполнения каких-либо отношений / данных таблицы соединения

Я хочу загрузить данные в объект гибернации, запустив что-то вроде 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 должен только быть заполнен его идентификатором.


person jlb    schedule 30.09.2014    source источник
comment
Это похоже на простой запрос, разве вы не можете просто использовать HQL, встроенный в собственный SQL? Что касается вашего обновления, я не думаю, что это возможно. Однако, возможно, это могло бы вам немного помочь stackoverflow.com/questions/25885310/   -  person Antoniossss    schedule 30.09.2014
comment
Будет ли использование HQL предотвращать объединение таблиц?   -  person jlb    schedule 30.09.2014
comment
Это зависит от того, какую FETCH политику вы нарушили. Если всегда LAZY, чем «да», ни объединения, ни дополнительные выборки выполняться не будут.   -  person Antoniossss    schedule 30.09.2014
comment
Действительно, но я бы хотел, чтобы это работало независимо от политики FETCH - например, отношения OneToOne требуют специальной конфигурации, которая должна быть установлена ​​как LAZY   -  person jlb    schedule 30.09.2014
comment
Может быть и наоборот. Все ваши ассоциации должны быть установлены на LAZY выборку, и они должны извлекаться при необходимости в FETCH режиме запроса. Невозможно отключить EAGAR получение объявленных файлов сопоставления im или аннотаций (я не слышал о таком)   -  person Antoniossss    schedule 30.09.2014
comment
Я не согласен с тем, что все ассоциации должны быть установлены на LAZY - это более специфичная для приложения конфигурация, которая не соответствует моим потребностям.   -  person jlb    schedule 30.09.2014
comment
Вы не можете не согласиться с тем, что, если бы он был ленивым, он был бы более гибким, так как вы всегда можете заставить H извлекать ленивые ассоциации раньше   -  person Antoniossss    schedule 30.09.2014
comment
Позвольте нам продолжить это обсуждение в чате.   -  person jlb    schedule 30.09.2014