"Entity name must be unique in a persistence unit"



我是GlassFish服务器的新手,我遇到了这个问题。我首先将一个模板项目(使用JPA)导入到NetBeans中,它工作得很好。然后,由于我想修改模板,我创建了项目的副本,关闭了NetBeans中的原始项目,取消部署第一个项目,然后将新复制的项目导入到NetBeans中。我更改了包名和持久性单元的名称。然而,当我尝试运行新项目时,我得到错误

Entity name must be unique in a persistence unit. Entity name [ToDoItem] is used for the entity classes [package1.ToDoItem] and [package2.ToDoItem]

这怎么可能?原来的项目不再存在于NetBeans中,我通过使用asadmin undeploy命令明确地将其从GlassFish中取消部署,我甚至试图删除并重新安装GlassFish,但没有任何变化。

我的persistence.xml是这样的:

<persistence version="2.0" 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">
<persistence-unit name="myserver-unit" transaction-type="JTA">
<jta-data-source/>
<properties>
  <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
  <property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
  <property name="javax.persistence.schema-generation.drop-source" value="metadata-then-script"/>
  <property name="javax.persistence.schema-generation.create-script-source" value="create-script.sql"/>
  <property name="javax.persistence.schema-generation.drop-script-source" value="drop-script.sql"/>
  <property name="javax.persistence.sql-load-script-source" value="load-script.sql"/>
  <property name="eclipselink.logging.level" value="FINEST"/>
</properties>

我只更改了持久单元的名称。

这发生在我身上,对我有用的是一个干净的项目,并删除域文件夹中的osgi-cache目录;似乎构建的包留在缓存中并导致命名冲突。

编辑:一点澄清,我设法在glassfish的干净安装上得到相同的错误,因为我在项目中有旧的.class文件,即使源代码不存在,它们最终还是在干净的域上。

相关内容

  • 没有找到相关文章