1
我正在使用實體管理器創建JPA條目的程序。 過程中我沒有得到任何錯誤。未創建或檢索JPA條目
...
factory = Persistence.createEntityManagerFactory("perst");
EntityManager entityManager = factory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(object);
entityManager.getTransaction().commit();
...
entityManager.close();
我創建了一個程序一樣跟讀的數據,但它不返回任何數據, 查詢將返回空。可能是什麼原因 ?
這是讀取數據的程序:
static List<String> classList = new ArrayList<String>();
private static EntityManagerFactory factory;
public static void main(String[] args) {
// TODO Auto-generated method stub
factory = Persistence.createEntityManagerFactory("perst");
EntityManager entityManager = factory.createEntityManager();
classList.add("LeaveRequest");
classList.add("person");
for (Object classOjc : classList) {
String className = classOjc.toString();
Query query = entityManager.createQuery("SELECT p FROM " + className + " p");
@SuppressWarnings("rawtypes")
List resultList = query.getResultList();
System.out.println(resultList.size());
for (Object result : resultList) {
System.out.println(result.toString());
}
}
}
的XML堅持是:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="perst" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>LeaveRequest</class>
<class>person</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:/home/vogella/databases/simpleDb;create=true" />
<property name="javax.persistence.jdbc.user" value="Sales" />
<property name="javax.persistence.jdbc.password" value="" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
<property name="eclipselink.logging.level" value="SEVERE" />
<property name="eclipselink.logging.exceptions" value="true" />
</properties>
</persistence-unit>
</persistence>
如果您沒有收到任何錯誤,並且返回列表的大小爲0,那麼它只是表示這些表中沒有任何內容。你在使用哪個數據庫?每次啓動應用程序時都重新創建模式嗎? – 2013-03-17 18:19:29
首先,我建議你寫一個JUnit測試,而不是上面的這個邏輯。另外,很高興看到你的'persistence.xml'來查看配置。 – 2013-03-17 18:53:47
@ JBNizet-我在輸入數據時沒有得到錯誤,所以我猜這些條目應該是持久的,(如果沒有我認爲我在提交失敗)有一種方法在創建條目時驗證過程成功了嗎?數據庫是德比與eclipselink – 2013-03-17 19:54:22