【发布时间】:2012-08-24 20:17:11
【问题描述】:
我正在使用 Eclipse Juno IDE
在 phpMyAdmin 中,我创建了自己的数据库和表。 现在使用 JDBC,我输入了一些记录。
接下来我尝试使用 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();
【问题讨论】:
-
能否请出示您的 jpa 配置文件
-
我认为你的配置文件没有问题。你有没有创建你的 EntityManagerFactory
-
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyJPA");
-
你能提供更多的 EntityManagerFactory.did 你把键值对 hibernate.hbm2ddl.auto","create-drop"
-
我添加了代码。我注意到它什么也没返回,所以我知道它是创建一个新表并删除旧表的数据..
标签: java database jpa jdbc entity