मैं एक जेपीक्यूएल क्वेरी लिखने की कोशिश कर रहा हूं जो सभी PlaylistItem
को हटा देगा-ArtContent
-0 द्वारा ArtContent
आईडी को प्रतिबिंबित करता है।हाइबरनेट में अपने बच्चे के आइटम के आईडी-एस द्वारा आइटम कैसे हटाएं?
मैं इस कोशिश की:
public int deleteItemsByContentIds(Long[] contentIds) {
EntityManager em = getEntityManager();
int result = em.createQuery(
"delete from PlaylistItem where artContent.id in (:idsArray) ")
.setParameter("idsArray", contentIds).executeUpdate();
return result;
}
लेकिन यह एक अपवाद फेंकता है:
Servlet.service() for servlet RemoveContentServlet threw exception:
javax.ejb.EJBException: java.lang.IllegalArgumentException:
Encountered array-valued parameter binding, but was expecting [java.lang.Long]
क्या, समझा जा सकता है क्योंकि वहाँ एक तर्क के रूप एक सरणी ले जा नहीं setParameter
विधि। तो इस तरह के किसी मुद्दे को हल करने का सबसे अच्छा तरीका क्या है?
सरलीकृत वर्ग परिभाषा:
@Entity
public class PlaylistItem implements Serializable {
@Id
@GeneratedValue
private Long id;
private int position;
@ManyToOne(optional = false)
@JoinColumn(name = "PLAYLIST_ID")
private Playlist playlist;
@ManyToOne(optional = false)
@JoinColumn(name = "ART_CONTENT_ID")
private ArtContent artContent;
...
}
@Entity
public class ArtContent implements Serializable {
@Id
@GeneratedValue
private Long id;
...
}
यही वह है! आपका बहुत बहुत धन्यवाद! – Anke
मेरे लिए भी ठीक काम करता है, धन्यवाद! – kospol