У меня есть отношение многие-к-одному, когда объект MessageContents имеет набор сообщений, а каждое сообщение имеет внешний ключ к MessageContents.
У меня есть следующий запрос:
String sqlQuery = "SELECT " +
" {msg.*}, "+
" {msc.*} "+
"FROM analyticsintegrationservices.Messages AS msg " +
"LEFT OUTER JOIN analyticsintegrationservices.message_contents AS msc " +
" ON msg.content_key = msc.unique_key " +
"WHERE msg.sequence_received < 10";
Когда я запрашиваю его, я хочу, чтобы Hibernate отобразил набор результатов в список объектов Messages.Когда я пробую следующий код, я получаю набор результатов MessageContents:
Query query = session.createSQLQuery( sqlQuery )
.addEntity( "msc", MessageContents.class )
.addJoin( "msg", "msc.message" )
.addJoin( "msc", "msg.messageContents" );
query.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY );
//query.list() returns a list of MessageContents.
Однако, когда я запускаю следующий код, я получаю исключение "org.hibernate.type.SetType не может быть приведен к org.hibernate.type.EntityType "
Query query = session.createSQLQuery( sqlQuery )
.addEntity( "msg",Messages.class )
.addJoin( "msc","msg.messageContents" )
.addJoin( "msg", "msc.message" );
query.setResultTransformer( Criteria.DISTINCT_ROOT_ENTITY );
// org.hibernate.type.SetType cannot be cast to org.hibernate.type.EntityType
Принятие происходит в строке
.addJoin( "msg", "msc.message" );
Как получить список сообщений с помощью sqlQuery?