2012-08-30 59 views
0

我正在使用Eclipse Juno IDEJPA VS JDBC - 2个问题

在phpMyAdmin中,我创建了自己的数据库和我的表。 现在用JDBC我输入了一些recored。

接下来我试图用JPA实现一些查询,我创建了一个实体 ,它使用相同的列和连接到我的数据库的persistence.xml。 但是当我运行程序时,它将删除所有记录并在我的数据库中创建一个新的空表(具有相同的名称) 。 所以我的问题是:我如何连接到数据库中的现有表,但不能创建一个新的 。

另一个问题是:因为我的表是 有关驱动程序上,因此,每个驱动可行驶多少次我没有给我的表的主键...因此,如果我使用的主 键也不会增加关于驱动程序的新数据。与JDBC的工作正常。 ,但与JPA实体需要一些字段作为主键......所以我怎么能在JPA中添加关于同一驱动程序的新数据 ?

持久性文件:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xsi:schemaLocation="http://java.sun.com/xml/ns/persistence         
     http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 
     <persistence-unit transaction-type="RESOURCE_LOCAL" name="MyJPA"> 
      <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
      <class>pack.bl.Travels</class> 
      <properties> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> 
       <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/drivers"/> 
       <property name="javax.persistence.jdbc.password" value=""/> 
       <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
       <property name="javax.persistence.jdbc.user" value="root"/> 

      </properties> 
     </persistence-unit> 

代码:

 EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyJPA"); 
    EntityManager em = emf.createEntityManager(); 

    List<Travels> allTravels = em.createQuery("SELECT t FROM travels t",Travels.class).getResultList(); 
    for (Travels s : allTravels) 
     System.out.println(s.toString()); 


    em.close(); 
+0

可能请出示您的JPA配置文件 –

+0

我添加持久性文件 – eliorsh

+0

我认为你的配置文件没有问题。你是否创建了EntityManagerFactory –

回答

1

id自动增量字段添加到您的表。这将是主要关键。

关于表格的自动创建,看这里(我假设你正在使用Hibernate作为JPA实现): Hibernate hbm2ddl.auto possible values and what they do?

+0

感谢您的回应,我添加了持久性文件 – eliorsh

+0

嗨,我添加了一个id autoincrement字段,但是当我试图添加新记录时,它给了我一个奇怪的例外 – eliorsh