Hibernate中的未知实体

时间:2015-07-02 11:38:28

标签: java xml hibernate jpa

我的应用程序在通过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问题吗?

1 个答案:

答案 0 :(得分:7)

看起来你正试图坚持你的实体经理:

em.persist(em);

当你应该试图坚持你的实体时:

em.persist(siecSprzedazyFormularz);

错误的原因是因为EntityManager对象不是托管实体,因此它不知道如何将其保存到数据库中。