我正在尝试在Eclipse(Indigo)中创建简单的EJB + JPA项目。我创建了新的EJB项目:
我在尝试定义实体时遇到问题:表“员工”无法解析。我添加了带有指定名称参数的@Table注释,但这不起作用。 我的persistence.xml文件:
<persistence-unit name="pu_name">
<jta-data-source>jdbc/baza1Postgres</jta-data-source>
</persistence-unit>
在glassfish中,我定义了JDBC Resource,其名称为:“jdbc / baza1Postgres”
如果我的桌子存在,“eclipse知道”怎么样?还有什么我应该配置的?
答案 0 :(得分:36)
发现此解决方案为“表xxx无法解析”错误:
在Eclipse中,转到Window - &gt;偏好 - &gt;验证,JPA Validator,关闭Build。
有时你正在开发一个应用程序以及一个新的数据库模式,但是你得到了这个:
无法为表“XXXX”解析架构“null”。
无论如何,这可能不应该默认开启;人们很可能会从头开始构建新的应用程序,而不是构建适合旧数据库的新应用程序,即使它们构建的是旧的,Eclipse的JPA工具也有来自表函数的构建实体。“
答案 1 :(得分:6)
在Eclipse中让它变得快乐我必须通过JPA Tools创建表。
右键单击项目&gt; JPA工具&gt;从实体生成表
我想你也可以关闭验证,但创建表似乎更有意义。
答案 2 :(得分:4)
我正在使用Eclipse。我注意到,当我使用&#34; Data Source Explorer&#34;时,eclipse会识别表格。 JPA eviroment中的窗口(可能不需要编译,但在同一个eclipse IDE中检查数据库很有用)。然后,当我在该窗口中创建了与数据库的连接时,我在连接属性中获得了问题更改数据:
NOt Working(无法解析表格):
Database: my_database
URL: jdbc:mysql://localhost:3306
User Name: jpa_user
Password: jpa_pass
已修复(我在URL字段中添加数据库):
Database: my_database
URL: jdbc:mysql://localhost:3306/my_database
User Name: jpa_user
Password: jpa_pass
如果表格在数据库中没有大写,请记住在实体中使用@Table(name =&#34;&#34;)。
答案 3 :(得分:3)
您需要在persistence.xml文件中指定查找实体的位置,查看Java EE 6 tutorial,这里有一个示例:
持久性单元
持久性单元定义一组所有实体 由应用程序中的EntityManager实例管理的类。 这组实体类表示a中包含的数据 单数据存储。
持久性单元由persistence.xml配置定义 文件。以下是persistence.xml文件的示例:
<persistence> <persistence-unit name="OrderManagement"> <description>This unit manages orders and customers. It does not rely on any vendor-specific features and can therefore be deployed to any persistence provider. </description> <jta-data-source>jdbc/MyOrderDB</jta-data-source> <jar-file>MyOrderApp.jar</jar-file> <class>com.widgets.Order</class> <class>com.widgets.Customer</class> </persistence-unit> </persistence>
此文件定义了持久性 名为OrderManagement的单元,它使用支持JTA的数据源: JDBC / MyOrderDB。 jar文件和类元素指定托管 持久化类:实体类,可嵌入类和映射 超。 jar-file元素指定的JAR文件 对包含托管的打包持久性单元可见 持久化类,而类元素显式命名 管理持久性类。
还可以使用hibernate查看这个stackoverflow question,您可以扫描具有Entity注释的类
答案 4 :(得分:1)
我遇到了这个错误,并且能够通过非常曲折的努力让它发挥作用。我正在使用PostgreSQL。
首先,我按照上面的建议做了,并关闭了构建的验证。然后我手动运行验证连接。我的步骤基本上是这样的:
1:通过Data Source Explorer连接到我的数据库。确保连接处于正确状态,然后转到TABLES并点击刷新。点击连接刷新没有刷新表。
2:可能是可选的,但我使用JPA Tools将架构导出到数据库。再次,我按步骤1点击刷新。
3:使用实体和表格注释实体。在实体中添加名称,在表注释中添加NAME,CATALOG和SCHEMA。
/var/qmail/mailname/
4:手动运行验证。添加目录很重要。这非常挑剔。
答案 5 :(得分:0)
使用maxmcbyte的答案的另一个选择是仅为特定项目设置它。右键单击该项目,然后选择“验证”。启用项目特定设置并禁用JPA Validator for Build。
答案 6 :(得分:0)