org.hibernate.MappingException: Неизвестный объект: java.lang.Long

Я пытаюсь создать именованный-native-запрос, который возвращает Long.

Вот мой ORM.xml (максимально упрощенный)

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
  version="2.0">

<named-native-query name="getCaseNumberByCommId" result-class="java.lang.Long">
  <query>SELECT case_id FROM communications WHERE comm_id =(?1)</query>
</named-native-query>

</entity-mappings>

это ошибка, которую я получаю:

ОШИБКА - org.hibernate.impl.SessionFactoryImpl - Ошибка в именованном запросе: getCaseNumberByCommId [coral: launch] org. hibernate.MappingException: Неизвестный объект: java.lang.Long

Я также пробовал просто указать "Long"

<named-native-query name="getCaseNumberByCommId" result-class="Long">
  <query>SELECT case_id FROM communications WHERE comm_id =(?1)</query>
</named-native-query>

и, как ни странно, получил эту ошибку:

Вызвано: org.hibernate.AnnotationException: Невозможно найти объект -class: Long ... Вызвано: java.lang.ClassNotFoundException: Long

Java не может найти Long в java.lang?

Спасибо за любые подсказки

edit : Я попытался удалить аннотацию «класс результата»:

    <named-native-query name="getCaseNumberByCommId" >
        <query>SELECT case_id FROM communications WHERE comm_id =(?1)</query>
    </named-native-query>

и получил эту ошибку:

вложенное исключение - org.hibernate.cfg.NotYetImplementedException: Pure собственные скалярные запросы пока не поддерживаются

Обновление *

Я так и не нашел способа сделать это, но поскольку база данных имела ограничение уникальности на comm_id, я мог просто вернуть сопоставленный объект pojo вместо графа.

например.

    <named-native-query name="getByCommId" result-class="com.foo.model.Communication">
        <query>SELECT * FROM communications WHERE comm_id =(?1)</query>
    </named-native-query>

, а затем извлечь желаемый case_id из возвращенного pojo.

6
задан slashdottir 8 November 2011 в 23:28
поделиться