2013-05-13 58 views
-1

在一个JSF 2.1 - Spring 3.1集成项目中。我尝试使用eclipselink 2.3.2,Glassfish 3.1.2和Maven在我的项目上处理事务容器。在Netbeans IDE 7.2上工作。Eclipselink -Glassfish项目对象不是已知的实体类型错误

在服务层我通过下面的代码注入实体管理器,并在调试它似乎确定。

@Inject 
public void setEntityManager() { 
EntityManagerFactory emfactory =Persistence.createEntityManagerFactory 
("E_DefterManagementPU"); 
    this.em = emfactory.createEntityManager(); 

但之后,我充满命名实体EfaFunctions,并尝试与

em.persist(EfaFunctions); 

它给这个错误继续存在

java.lang.IllegalArgumentException: Object: [email protected] 
is not a known entity type. 

但在** **的persistence.xml我有以下节点

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
<jta-data-source>EFA</jta-data-source> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 

我的实体项目位置是com.edefter.entity.EfaFunctions;而不是错误指定的位置。实际上,有一个答案是由Pascal in this link 写的,但我的生成策略是none,我的实体是由netbeans生成的。需要一些专家的意见。由于提前

我删除了

@Table(name="EFA_FUNCTIONS") 

注释从实体的顶部,但@Entity仍然停留。 该错误是走了,但随后的查询开始为

INSERT INTO EFAFUNCTIONS 

,没有下划线,但我需要

INSERT INTO EFA_FUNCTIONS 

,becouse它的数据并没有插入。为什么eclipselink给@Table注释带来错误,尽管没有像EFAFUNCTIONS这样的表为什么没有给出任何错误

回答

2

我解决了这个问题,正如我提到的问题,我已经通过Netbeans从数据库生成实体,所以我没有怀疑是实体格式。我曾在Hibernate之前以ORM和Hibernate加DB2或MYSQL的方式工作过。这些组合没有给出相同用法的错误。但是用组合Eclipselink - Oracle DB @Entity注释必须是如下所示的参数

@Entity(name="entityName")

@Table(name="TableName")

感谢您的评论。

0

为什么你会尝试坚持一个EntityManager?更好地通过(到em.persist)一个实体(其中一个类标记为@Entity)

+0

对不起,我已经给它一个实体作为参数;我更新了它 – Malcolmxappa 2013-05-13 15:03:58

+0

包含你当前的错误。 – James 2013-05-13 15:38:13

+0

@James我在下面的代码中给出了EntityManager对象而不是EfaFunctions。谢谢你的兴趣我想我解决了问题 em.persist(EfaFunctions); – Malcolmxappa 2013-05-13 17:42:55

0

我有一个类似的问题,试图通过对EntityManager的调用persist()坚持实体类的一个对象时: 

java.lang.IllegalArgumentException异常:对象:entities.Documents [ID = NULL]不是已知的实体类型。

原来,在该行

<persistence-unit name="my-pu" transaction-type="RESOURCE_LOCAL"> 

是从Java代码中声明实体管理器工厂时,我使用的名称不同势在persistence.xml中声明的持久化单元的名称:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("my-persistenceunit"); 

两个名字修正以同一个名字,叫persist()后都按预期。

相关问题