Ниже приведен снимок моего @SqlResultSetMapping, который включает две сущности и еще два столбца из собственного запроса.
@SqlResultSetMapping(
name = "EventLogMarketingInfoMapping",
entities = {
@EntityResult(
entityClass = MarketingInfo.class,
fields = {
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "remoteAddr", column = "remote_addr"),
@FieldResult(name = "user_email", column = "user_email"),
}
),
@EntityResult(
entityClass = EventLog.class,
fields = {
@FieldResult(name = "log_id", column = "log_id"),
@FieldResult(name = "comment", column = "comment"),
@FieldResult(name = "client", column = "client_id"),
@FieldResult(name = "game", column = "game_id")
}
)
},
columns = {
@ColumnResult(
name = "user_namex",
type = String.class
),
@ColumnResult(
name = "ip",
type = String.class
),
})
Выше SqlResultSetMapping вызывается с помощью следующего собственного запроса
Query query = entityManager.createNativeQuery(sql, "EventLogMarketingInfoMapping");
return query.getResultList();
MarketingInfo @Entity также имеет некоторые @Forumlas, которые не упоминаются в @EntityResult.
В то время как query.getResultList () выдает следующее исключение.
java.sql.SQLException: Column 'formula3_0_' not found.
Кто-нибудь может определить, что здесь происходит? Я также хотел бы добавить, что сам sql работает нормально и в нем нет синтаксической ошибки или столбца формулы.
Заранее спасибо.




Добавьте соответствующий SQL-оператор, который запускается. Согласно аннотации @EntityResult, оператор select должен извлекать все свойства объекта и должен быть сопоставлен. частичный выбор столбца создаст упомянутое исключение. Альтернативой может быть использование @ConstructorResult, который позволяет частичное извлечение столбца для родительского элемента также для всех связанных объектов сущности.
ты когда-нибудь догадывался об этом?