2011-12-01 20 views
9

JPA tarafından tek değerleri skaler veri türleriyle eşleştirmek için herhangi bir destek var mı? Örneğin, bazı değişkenJPA kullanarak tek bir değer mi alınıyor?

int numerOfEmployees 

için aşağıdaki sorguda

SELECT COUNT(*) AS NUM FROM EMPLOYEES 

yılında NUM harita veya böyle durumlarda kullanmak için JDBC kullanmak zorunda yapmalı? Bazı durumlarda meydana yazın veritabanında, yani bağlı olabileceğini

long num = ((Number)em.createNativeQuery("select count(*) from Employees") 
        .getSingleResult()).longValue(); 

Not: JPQL

long num = ((Number)em.createQuery("select count(e) from Employee e") 
        .getSingleResult()).longValue(); 

yanı sıra gelen yerli SQL sorguları sorguları gelen

cevap

14

Evet, sayıl türlerini dönebilirsiniz BigDecimal gibi bir şey olabilir.

+0

Doh, teşekkürler. Dokümanlardan mümkün olduğunu anlamadı: http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery(java.lang.String) [Not nesne türünü ve örnek çalışmasını yapmak için intValue() öğesini kullanın.] –

+0

"BigInteger" türünün süper bir türü olan longValue() 'yi kullanmak için çözümü güncelleştirdim, emin değilim Bu durum için 'Number' alt türünü döndürmeyen herhangi bir DB/sürücüsü, ancak orjinal cevapta '(uzun)' yazılanlar benim için hiçbir zaman" asla "çalışmaz. (Ben de emin olmak için bir tür eşleme olarak 'Number.class' belirtebilirsiniz merak ediyorum (Double.class işe yaramaz gibi görünüyor: http://stackoverflow.com/questions/8959771/jpql-native-query-using- toplam-ve-sayısı) – eckes