2015-05-29 84 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