我的应用程序在通过JPA查找实体时遇到问题。 我得到了例外:
Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: org.hibernate.jpa.internal.EntityManagerImpl
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1184)
at test.Test.main(Test.java:50)
我的persistence.xml文件:
<persistence 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_2_0.xsd" version="2.0">
<persistence-unit name="JPAService" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" ></property>
<property name="hibernate.connection.url" value="***"></property>
<property name="hibernate.connection.username" value="***" />
<property name="hibernate.connection.password" value="***" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.archive.autodetection" value="class"/>
</properties>
</persistence-unit>
</persistence>
执行文件:
package test;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import testo.entities.SiecSprzedazyForm;
public class Test {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPAService");
EntityManager em = emf.createEntityManager();
SiecSprzedazyForm siecSprzedazyFormularz = new SiecSprzedazyForm();
siecSprzedazyFormularz.setAdresIpOsobWysyl("192.168.0.30");
siecSprzedazyFormularz.setDataWyslania(new Date());
siecSprzedazyFormularz.setEmail("ada@gmail.com");
siecSprzedazyFormularz.setImieNazwisko("ada byk");
siecSprzedazyFormularz.setMiejscowosc("Kraków");
siecSprzedazyFormularz.setPowiat("Kraków");
siecSprzedazyFormularz.setTelefon("123123123");
em.getTransaction().begin();
em.persist(em);
em.getTransaction().commit();
em.close();
emf.close();
}
}
是有人有任何解决方案来解决我的persistence.xml问题吗?
答案 0 :(得分:7)
看起来你正试图坚持你的实体经理:
em.persist(em);
当你应该试图坚持你的实体时:
em.persist(siecSprzedazyFormularz);
错误的原因是因为EntityManager对象不是托管实体,因此它不知道如何将其保存到数据库中。