是否可以使用EclipseLink 2.3在EntityManager中進行注入?JPA如何注入?
這是我的persistence.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="SuaParte" transaction-type="RESOURCE_LOCAL">
// classes..
<properties>
<property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/schema"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
我是新與JPA,所以我創建了第一本persistence.xml文件只是爲了測試,看看它是否正常工作,但現在我想使用@PersistenceContext
不必擔心管理EntityMangerFactory
和EntityManager
。
我正在使用帶有GlassFish v3的Eclipse Indigo Java EE Web開發人員。
UPDATE: 我跟隨@Andrei Bodnarescu方法,這個方法也tutorial,一切都很好打通GF3與我的數據庫的連接:
而且我改變我的persistence.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="SuaParte" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/mysql</jta-data-source>
//classes..
</persistence-unit>
</persistence>
所以我儘量在我的數據庫堅持的東西:
@Stateless
@LocalBean
public class DaoUser {
@PersistenceContext(unitName="SuaParte")
private EntityManager em;
public void persist(User user){
try{
em.persist(user);
}catch(Exception e){
e.printStackTrace();
}
}
}
而且它在em.persist(user);
中返回java.lang.NullPointerException
。 我在做什麼錯?
什麼是t他在使用'@ PersistenceContext'時遇到問題?你的問題並不完全清楚。如果您將事務類型更改爲「JTA」,它應該在Glassfish中工作得很好。 – BalusC
@BalusC,我沒有在GlassFish中創建連接池,我不知道我必須這樣做。 我已經做了什麼安德烈告訴,但現在返回java.lang.NullPointerException。 –
這很可能是因爲缺少CDI工作所需的一些依賴關係。沒有更多細節很難說。如果您不想在glassfish中使用JPA2 + EJB3 + CDI的工作示例,請查看我在http://myprojects2.googlecode.com/svn/trunk/other_projects/jpa2Exam/ –