我在eclipse中有一个工作项目,它创建了一个从实体到mysql数据库的JPA表(仍然在学习)。不幸的是,它使表格在错误的数据库中,因为我希望有“测试”和“生产”数据库。不知怎的,它得到了'生产'数据库的详细信息,即使它看起来像选定的数据库连接用于测试。 我篡改了一点项目并使其与正确的连接对象连接(测试)。我可以在eclipse(两个dbs)中ping数据库,并在Data Source Explorer中查看数据库。 但现在我无法通过右键单击并选择“JPA”工具'>来为项目创建表格。 '从实体生成表'。 创建开始并完成没有错误,就像一切正常,但我看不到任何一个数据库中的表。 (在eclipse数据库资源管理器中或从命令行)。 persistence.xml应该没问题,因为它已经创建了一个表。
唯一的错误是Entity类,因为它表示实体注释“表xxx无法解析”。正如我所看到的那样,它来自未创建的表格。
以下是persistence.xml以防万一。 http://pastebin.com/djPZei90
该项目也是一个Maven项目,它使用SVN。 eclipse /项目的maven成功加载了依赖关系,并没有SVN的复杂性。
由于Maven,有2个persistence.xml文件(仅登录凭据和数据库名称更改),用于生产和测试。可能是在第1位检查并从错误的文件加载了db-connection。 (只是猜测)
我还尝试在生成表时创建script.sql。我找到了该文件,但它完全是空的。
无论如何,现在的问题是我不能在任何地方创建表。 我完全对此感到困惑。我应该在哪些提示中解决这个问题?
答案 0 :(得分:2)
克里斯说得对,即使我在第一次阅读时没有正确理解答案。 我试过与其他提供商,但我可能偶然修改了错误的文件(2'persistence.xml'文件,因为它是一个maven项目),或者可能还有其他原因我没有发现。 我之前得到了一个提示,我应该使用给定的提供程序(在persitence.xml中)。导致我毕竟没有过多关注它。自从使用eclipselink以来,提供商必须确实:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
再次感谢克里斯,即使我第一次尝试失败,也不得不花费更多时间来解决这个问题。
答案 1 :(得分:1)
你能解决问题吗?不幸的是,我偶然发现了同样罕见的问题,完全没有意义。 JPA Tools不会出于任何原因添加映射类,尽管它将它们写入persistence.xml。
上周一切都运转良好,但现在一切都是f * * 。我甚至在不同的工作区创建了一个新的独立项目,但它发生了同样的错误。显然这是一个eclipse / plugin bug,否则我无法解释它。使用eclipse 4.2.0。我不开心。
编辑:删除Dali Tools后,JPA Configurator,Seam 3插件创建实体似乎再次运行。不知道为什么,很可能是冲突,但它仍然无法解释为什么它现在发生而不是1个月前。从那时起我根本没有改变我的eclipse安装......
答案 2 :(得分:0)
花一整天的时间。
我在Eclipse(Indigo btw)中创建了一个全新的(JPA)项目。 还为此创建了一个新的数据库(mysql)。
在Eclipse中建立连接。文件&gt;新&gt;其他...&gt;连接配置文件。
制作一个新的包结构,让Eclipse创建'persistence.xml'(src / META-INF / persistence.xml)。
我用eclipse向导创建了一个'JPA Entity'类。 (添加'id'(PK)和'content'字段) 将我之前项目中的“pom.xml”复制到新项目(仅对项目名称进行了少量更改)。
还复制了上一个项目中的'persistence.xml'文件(src / main / java / META-INF /,不包含'test')。已更改持久性文件中的数据库详细信息和登录凭据。
在eclipse中制作项目'Maven项目'(右键单击项目名称&gt;配置) 由于它现在是一个Maven项目,默认的'persistence.xml'可以被删除,因为它位于错误的位置。 (Mavenizing项目使用pom.xml从已存在的jar中删除了所有错误)
尝试再次为项目创建表(相同错误,但等待......)。
右键点击项目&gt; Maven&gt;禁用Maven Nature
然后再次成为maven项目,右键单击项目&gt;配置&gt; ...
尝试再次创建表并创建它们。一切正常!
去图!
似乎一切都很好,就像我怀疑的那样。 maven(插件)+ eclipse似乎存在某种错误。
在上一个项目上做同样的技巧也无济于事。我甚至用向导创建了实体类(删除了现有的)。 &lt; class&gt;声明被添加到'persistence.xml',但它仍然不会执行该表。 (也尝试删除并重新添加maven性质)
我可能会在过程中遗漏某些内容/做出不同的做法,或者将错误做错。但考虑到我让其他项目工作而其他项目没有,使用相同的技巧,似乎有一个很大的讨厌的错误。