नहीं बनाएगा मैं सूर्य जावा पेटस्टोर डेमो का उपयोग करने का प्रयास कर रहा हूं।
CatalogFacade कक्षा में निम्नलिखित एनोटेशन है:@PersistenceNnit एनोटेशन एक EntityManageFactory emf = null
@PersistenceUnit(unitName="myPetStorePU")
private EntityManagerFactory emf;
CatalogFacade सूर्य के सभी तरीकों में है:
EntityManager em = emf.createEntityManager();
लेकिन मैं ईएमएफ के लिए एक नल पॉइंटर एक्सेप्शन हो रही है जब createEntityManager की कोशिश कर रहा । लेकिन ... मैं ऐसे
के रूप में है कि रेखा के ऊपर निम्नलिखित पंक्ति जोड़ अगरEntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("myPetStorePU");
EntityManager em = emf.createEntityManager();
तो ईएमएफ सफलतापूर्वक बनाया जाता है और दृढ़ता इकाई myPetStorePU भी सफलतापूर्वक डेटाबेस को जोड़ता है। तो यह persistence.xml वाक्यविन्यास की तरह दिखता है और इसका स्थान सही है। मैं समझना चाहता हूं कि एनोटेशन क्यों काम नहीं करता है क्योंकि मुझे लगता है कि प्रत्येक विधि में createEntityManagerFactory लाइन जोड़ने के विरोध में एनोटेशन का उपयोग करने का कोई कारण नहीं था।
मेरे src/META-INF/persistence.xml फ़ाइल इस तरह दिखता है:
<persistence-unit name="myPetStorePU">
<description>Petstore Persistence Unit</description>
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
<class>com.sun.javaee.blueprints.petstore.model.Tag</class>
<class>com.sun.javaee.blueprints.petstore.model.SellerContactInfo</class>
<class>com.sun.javaee.blueprints.petstore.model.Product</class>
<class>com.sun.javaee.blueprints.petstore.model.Item</class>
<class>com.sun.javaee.blueprints.petstore.model.Category</class>
<class>com.sun.javaee.blueprints.petstore.model.Address</class>
<class>com.sun.javaee.blueprints.petstore.model.ZipLocation</class>
<properties>
<property name="toplink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@#############"/>
<property name="toplink.jdbc.user" value="####"/>
<property name="toplink.jdbc.password" value="#####"/>
<property name="toplink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
संपादित करें: CatalogFacade petstore.model पैकेज में है और ServletContextListener
<listener>
<listener-class>com.sun.javaee.blueprints.petstore.model.CatalogFacade</listener-class>
</listener>
लागू करता है
index.jsp सूर्य में निम्न है:
<%
CatalogFacade cf = (CatalogFacade)config.getServletContext().getAttribute("CatalogFacade");
List<Tag> tags=cf.getTagsInChunk(0, 12);
%>
public List<Tag> getTagsInChunk(int start, int chunkSize) {
//The next line is required since the @PersistenceUnit annotation at the top of this class does not work
EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("myPetStorePU");
EntityManager em = emf.createEntityManager();
System.out.println("Entity manager " + emf);
Query query = em.createQuery("SELECT t FROM Tag t ORDER BY t.refCount DESC, t.tag");
List<Tag> tags = query.setFirstResult(start).setMaxResults(chunkSize).getResultList();
em.close();
return tags;
}
हमें बताएंगे कि कैसे आप 'CatalogFacade' का एक उदाहरण प्राप्त फिक्स का उपयोग करने जा। और यह क्या है - एक pojo, एक ejb, या? – Bozho