2015-03-03 3 views
-1

У меня есть приложение весны, которое должно подключаться к существующей базе данных и просто запрашивать сущность для существования на основе некоторых атрибутов.Как создать собственные запросы весной?

Я не хочу создавать класс @Entity для этого. Но я все еще хочу использовать пружину, управляемую EntityManager и т. Д.

При использовании Spring, что является лучшим подходом только для запроса select для этого объекта? С использованием em.createNamedQuery(QUERY); с String QUERY = "SELECT count(*) from my_table where username =: username AND email := email)";?

ответ

0

Использование em.createNativeQuery(QUERY). Кроме того, вам придется использовать позиционные параметры (?1) вместо именованных параметров (:email), поскольку только опорные параметры поддерживаются JPA в собственных запросах.

1

Ответы от @ predrag-maric и @ pL4Gu33 являются правильными, но если вы используете JPA в своем проекте (например, Hibernate), вы можете также использовать аннотацию @NamedNativeQuery.

Подробнее about named native queries.

+0

Но могу ли я использовать именованные родной запрос, не имеющий '@ Entity' класс? (это так, как написано в моем первоначальном сообщении). – membersound

+0

Боюсь, вам нужно; from doccumentation: «Аннотацию NamedNativeQuery можно применить к сущности или сопоставленному суперклассу». Если вы действительно не хотите '@ Entity', вы должны использовать' EntityManager.createNativeQuery' –

+0

Вот что я делаю. – membersound

0

простой пример родного запроса

@PersistenceContext 
    EntityManager em; 

public String test(Integer id) 
{ 
Query query = em.createNativeQuery("SELECT name FROM Accounts where id=?"); 
query.setParameter(1,id); 
return query.getSingleResult(); 
} 
Смежные вопросы