我有一个spring应用程序应该连接到现有数据库,只根据某些属性查询实体是否存在。
我不想为此创建@Entity
类。但我仍然想使用spring EntityManager
等。
使用Spring
时,为该实体查询select
的最佳方法是什么?将em.createNamedQuery(QUERY);
与String QUERY = "SELECT count(*) from my_table where username =: username AND email := email)";
一起使用?
答案 0 :(得分:1)
来自@ predrag-maric和@ pL4Gu33的答案都是正确的,但如果你在项目中使用JPA(例如,Hibernate),你也可以考虑使用@NamedNativeQuery
注释。
答案 1 :(得分:0)
使用em.createNativeQuery(QUERY)
。此外,您必须使用位置参数(?1
)而不是命名参数(:email
),因为JPA在本机查询中只支持位置参数。
答案 2 :(得分:0)
您可以使用entitymanager中的此方法。 http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery%28java.lang.String%29
答案 3 :(得分: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();
}