2015-05-29 78 views
0

我正在試圖解決大學的Java編程練習,但我不知道如何解決下一個問題。我有下一個persistence.xml文件:JPA從數據庫檢索對象

<?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_1_0.xsd"> 
    <persistence-unit name="stud" transaction-type="RESOURCE_LOCAL"> 
    <class>lt.vu.mif.jate.tasks.task03.jpa.model.Customer</class> 
    <class>lt.vu.mif.jate.tasks.task03.jpa.model.Product</class> 
    <class>lt.vu.mif.jate.tasks.task03.jpa.model.Sale</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
     <property name="hibernate.max_fetch_depth" value="3"/> 
     <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.NoCacheProvider"/> 
     <property name="hibernate.generate_statistics" value="false"/> 
     <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://****************"/> 
     <property name="javax.persistence.jdbc.user" value=""/> 
     <property name="javax.persistence.jdbc.password" value=""/> 
     <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> 
     <property name="hibernate.hbm2ddl.auto" value="none"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

數據庫的URL在這裏只是ommited。我無法更改此文件。我必須連接到數據庫並從數據庫獲取所有數據。我已經創建了所需的三個類。我該怎麼做?非常感謝。

+0

您是否瞭解jpql? –

+0

我知道是用於查詢的java語言。但現在我甚至沒有與數據庫共存。 –

+0

問題到底是什麼?您無法獲得與數據庫的連接,或者您無法使用該連接獲取任何有用的連接? – Tobb

回答

0

在本頁面看看:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/SettingUpJPA/SettingUpJPA.htm

https://docs.jboss.org/hibernate/orm/3.6/quickstart/en-US/html/hibernate-gsg-tutorial-jpa.html

還有其他幾個教程等在那裏。但我認爲你缺少的關鍵部分是:

public static void main(String[] args) { 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("stud"); 
    EntityManager em = emf.createEntityManager(); 
} 

這給你一個EntityManager。然後您可以撥打:

em.getTransaction().begin(); 
List<Customer> result = entityManager.createQuery("from Customer", Customer.class).getResultList(); 
+0

我按照你的建議。現在我得到了這個excepcion:「java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:客戶沒有被映射[來自客戶]」這是因爲我在我的班級有不好的缺點?或者也許是別的?謝謝。 –

+0

通常情況下,「客戶未映射」意味着您的JPA提供程序(在本例中爲休眠)未將客戶類作爲實體提取。所以這可能是您的註釋問題。只需確認 - 區分大小寫,並且正在尋找實體,而不是表格,因此請確保您有「來自客戶」而不是「來自客戶」。此外,您可以嘗試「entityManager.createNativeQuery(」select * from customer「)」來確保連接正常。在這種情況下,它正在執行本機SQL,因此它正在查找表名,而不是實體,因此小寫客戶。 – Matt