मुझे SELECT ... FROM table_name WHERE id IN()
क्वेरी जैसे कुछ एरे के रूप में आपूर्ति किए गए ids
पर आधारित ओरेकल डेटाबेस से चुनी गई पंक्तियां लाने की आवश्यकता है।हाइबरनेट में setParameterList() विधि का उपयोग कैसे करें?
ऐसा करने के मेरे प्रयासों में, मैं अपने डीएओ में org.hibernate.setParameterList(String name, Object[] values)
विधि का उपयोग करने की कोशिश कर रहा हूं।
@Service
@Transactional(readOnly = true, propagation=Propagation.REQUIRES_NEW)
public final class ProductImageDAO implements ProductImageService {
@SuppressWarnings("unchecked")
public List<Object[]> getFileName(String[] list) {
return sessionFactory
.getCurrentSession()
.createQuery("SELECT prodImageId, prodImage FROM ProductImage WHERE prodImageId=:list")
.setParameterList("list", list).list();
}
}
दिया विधि में टाइप String[]
के पैरामीटर संबंधित स्प्रिंग नियंत्रक वर्ग से आपूर्ति की है।
यह निम्नलिखित अपवाद को फेंकने का कारण बनता है।
org.hibernate.hql.ast.QuerySyntaxException: अप्रत्याशित टोकन:, लाइन 1, स्तंभ 78 के पास [prodImageId, prodImage चयन model.ProductImage से जहां prodImageId =: id0_,: id1_,: id2_,: id3_, : id4_,: id5_]
रास्ता ids
की सूची हाइबरनेट के प्रयोग पर आधारित चयनित पंक्तियों को पुनः प्राप्त करने में क्या है?
हाँ मेरी HQL वाक्य रचना गलत था । 'ProdImageId =: id' जहां 'prodImageId in (: id)' काम किया है, को बदलकर। – Tiny
अंतिम क्वेरी 'query.setParameterList (" accountIds ", खाताफिल्टर) होना चाहिए; ', नहीं? –
फुकुजावा सही है, क्वेरी होना चाहिए .setParameterList ("accountIds", accountFilter), कृपया उत्तर – UCJava