2010-01-20 12 views
5

के साथ स्प्रिंग 3.0 ओआरएम मैं स्प्रिंग 3.0 ओआरएम में JPA 2.0 का उपयोग करने की कोशिश कर रहा हूं। जेपीए विक्रेता Hibernate 3.5.0-बीटा -3 है।जेपीए 2.0 क्लासकास्टएक्सप्शन

यह JPQL के साथ अच्छी तरह से काम करता है, लेकिन जब मैं CriteriaQuery का उपयोग करने की कोशिश की, एक अपवाद होता है:

java.lang.ClassCastException: $ Proxy50 $ पर javax.persistence.TypedQuery में ढाला नहीं जा सकता Proxy38.createQuery (अज्ञात स्रोत) com.absorbx.retailx.dao.impl.ShopDaoImpl.findByCrieria (ShopDaoImpl.java:30) पर com.absorbx.retailx.dao.SimpleDaoTest.testFindByCriteria पर (SimpleDaoTest.java:39) sun.ref पर lect.NativeMethodAccessorImpl.invoke0 (मूल निवासी विधि) sun.reflect.DelegatingMethodAccessorImpl.invoke पर sun.reflect.NativeMethodAccessorImpl.invoke (अज्ञात स्रोत) (अज्ञात स्रोत)

DAO कोड पर:

@Repository 
public class ShopDaoImpl implements 
ShopDao { 
    @PersistenceContext 
    transient EntityManager entityManager; 

    @Override 
    public Shop findByCrieria() { 
     CriteriaBuilder cb = entityManager.getCriteriaBuilder(); 
     CriteriaQuery<Shop> c = cb.createQuery(Shop.class); 
     Root<Shop> shop = c.from(Shop.class); 
     c.select(shop).where(cb.equal(shop.get("name"), "petstore")); 
     TypedQuery<Shop> q = entityManager.createQuery(c); 
     return q.getSingleResult(); 
    } 

} 

मैं इस समस्या को कैसे हल करूं?

org/springframework/orm/jpa/SharedEntityManagerCreator.java:

if (result instanceof Query) { 
    Query query = (Query) result; 
    ... 
    result = Proxy.newProxyInstance(Query.class.getClassLoader(), 
     new Class[] {Query.class}, new DeferredQueryInvocationHandler(query, target)); 
    ... 
} 

बेहतर होगा एक मुद्दा बनाने के लिए होगा

उत्तर

4

यह वसंत में एक बग हो रहा है।

+0

अच्छी पकड़। वसंत यह देखने के लिए जांच कर रहा है कि क्वेरी 'क्वेरी' का उदाहरण है, और उस प्रकार की प्रॉक्सी उत्पन्न करती है। दुर्भाग्यवश, 'TypedQuery'' क्वेरी 'का एक उप प्रकार है, और जेनरेट की गई प्रॉक्सी अभी भी केवल' क्वेरी 'लागू करेगी। 'TypedQuery' को जावाईई 6 में पेश किया गया था, इसलिए यह समझ में आता है कि वसंत इसे क्यों संभाल नहीं पाता है, हालांकि स्प्रिंग 3 * को जावाईई 6 को सही तरीके से संभालना है। निश्चित रूप से एक बग। – skaffman

+1

धन्यवाद, दोस्त। मैंने जारी किया: http://jira.springframework.org/browse/SPR-6733 यह बग की रिपोर्ट करने का मेरा पहला समय है :) –

+0

और यह अभी तय किया गया है :) – skaffman

संबंधित मुद्दे