3

我在 Eclipse 中有一个工作项目,它创建了一个从实体到 mysql 数据库的 JPA 表(仍在学习)。不幸的是,它在错误的数据库中创建了表,因为我希望有“测试”和“生产”数据库。不知何故,它获得了“生产”数据库的详细信息,即使看起来所选的数据库连接是用于测试的。我稍微篡改了项目并使其与正确的连接对象连接以进行某些(测试)。我可以在 Eclipse 中 ping 数据库(两个数据库)并在数据源资源管理器中查看数据库。但是现在我无法通过右键单击项目并选择“JPA 工具”>“从实体生成表”来为项目创建表。创建开始和结束都没有错误,就像一切正常一样,但我在两个数据库中都看不到表。(在 Eclipse 数据库资源管理器中或从命令行)。persistence.xml 应该没问题,因为它之前已经创建了一个表。

唯一的错误是实体类,因为它对实体注释“无法解析表 xxx”说。正如我所看到的,它来自未创建的表。

这是persistence.xml,以防万一。 http://pastebin.com/djPZei90

该项目也是一个 Maven 项目,它使用 SVN。Maven 为 Eclipse/项目成功加载了依赖项,并且 SVN 没有任何复杂性。

由于 Maven,有 2 个 persistence.xml 文件(仅登录凭据和数据库名称更改),用于生产和测试。可能是在第一个位置检查并从错误的文件加载了 db-connection。(只是猜测)

我还尝试在生成表时创建 script.sql。我找到了该文件,但它完全是空的。

无论如何,问题是现在我无法在任何地方创建表格。我对此完全感到困惑。任何提示我应该在哪里解决这个问题?

4

3 回答 3

2

克里斯说得对,即使我在第一次阅读时没有正确理解答案。我尝试使用其他提供商,但我可能不小心修改了错误的文件(2 'persistence.xml' 文件,因为它是一个 maven 项目),或者可能有其他一些我没有发现的原因。我之前得到了一个提示,我应该使用给定的提供程序(在 persitence.xml 中)。因为我毕竟没有太在意它。由于使用 eclipselink,提供者必须是:

    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

再次感谢克里斯,即使我在第一次尝试时失败了,不得不再花几个小时来解决这个问题。

于 2012-05-28T08:09:35.190 回答
1

你能解决问题吗?不幸的是,我偶然发现了同样罕见的问题,这完全没有意义。无论出于何种原因,JPA 工具都不会添加映射类,尽管它会将它们写入persistence.xml。

前一周一切都完美无缺,但现在一切都 f* *。我什至在不同的工作区创建了一个新的独立项目,但它发生了同样的错误。显然这是一个eclipse/plugin bug,否则我无法解释。使用 Eclipse 4.2.0。我不高兴。

编辑:删除 Dali Tools、JPA Configurator、Seam 3 Plugin 创建实体后似乎又可以工作了。不知道为什么,很可能是冲突,但它仍然无法解释为什么它现在而不是 1 个月前发生。从那以后我根本没有改变我的eclipse安装......

于 2012-10-30T07:47:32.817 回答
0

花一整天的时间在这上面。

我在 Eclipse (Indigo btw) 中创建了一个全新的 (JPA) 项目。还为此创建了一个新数据库(mysql)。

为此在 Eclipse 中建立了连接。文件 > 新建 > 其他... > 连接配置文件。

制作了一个新的包结构,让 Eclipse 创建“persistence.xml”(src/META-INF/persistence.xml)。

我用 Eclipse 向导创建了一个“JPA 实体”类。(添加了“id”(PK)和“内容”字段)将“pom.xml”从我以前的项目复制到新项目(仅对项目名称进行了微小的更改)。

还从上一个项目中复制了“persistence.xml”文件(src/main/java/META-INF/,不包括“测试”)。更改了持久性文件中的数据库详细信息和登录凭据。

在 Eclipse 中创建项目“Maven 项目”(右键单击项目名称 > 配置)因为它现在是一个 Maven 项目,所以可以删除默认的“persistence.xml”,因为它位于错误的位置。(Mavenizing项目使用pom.xml从不存在的jar中删除了所有错误)

尝试为项目再次创建表(同样的错误,但请稍等......)。

右键单击项目 > Maven > 禁用 Maven 自然

然后再次使它成为maven项目,右键单击项目>配置> ...

尝试再次创建表并创建它们。一切正常!

去搞清楚!

似乎一切都很好,就像我怀疑的那样。maven(插件)+ eclipse似乎存在某种错误。

对上一个项目执行相同的技巧将无济于事。我什至用向导创建了实体类(删除了现有的)。<class> 声明被添加到'persistence.xml',但它仍然不会做表。(还尝试删除并重新添加 Maven 性质)

我可能在这个过程中遗漏了一些东西/做了不同的事情,或者一起做错了。但是考虑到我得到了另一个项目的工作,而其他的没有,使用相同的技巧,似乎有一个大的讨厌的错误。

于 2012-05-25T11:52:52.947 回答