创建数据库实体类时出现NetBeans问题

时间:2014-02-15 13:01:10

标签: java netbeans entity eclipselink derby

我似乎遇到了NB的问题。我能够成功(有一些初始问题似乎是NB中的一个错误)从数据库创建一个实体类。目标是将数据库从一个位置嵌入到应用程序中。步骤和问题解释如下。

资源:
〜数据库[TourismDB]有两个表:“游客”,“游览”
〜包裹:META-INF,toursapp
〜文件:persistence.xml,Toursists.java,Tours.java,ToursUI.java

步骤:
1.创建包✔
2.从数据库创建新的实体类✔
3.如果尚未创建,请在PC上创建与DB物理位置的连接✔
4.成功完成所有步骤,文件由NB创建,即。 META-INF包和数据库实体类的自定义包✔
5.为表创建的一个类文件创建一个Serializable字段,但将更改为Boolean,并且连接到原始Serial更改的错误也更改为Bool。 ✔
6.创建JFrame表单,添加jTable并将其绑定到Tours表。 ✔
7.更改META-INF \ Persistence.xml JDBC url以排除物理位置的实际路径;例如。 jdbc:derby:C:\Projects\ToursApp\TourismDB - > jdbc:derby:C:\Projects\ToursApp\TourismDB
8. persistence.xml创建必须删除的新行。 (见附录.1)✔
9.在运行JFrame之前保存所有内容。 ✔
10.运行JFrame并且NB连接到EclipseLink,然后抛出异常。 (预期;参考错误1)✔
11.重新启动NB并运行文件。一切都正确编译。 ✔

附录
1. Persistence.xml
之前
Persistence as created by NB

将元素绑定到JTable Persistence after binding

更改JDBC URL以排除物理位置。见第7步。

更改后,运行之前 Persistence after changing

错误:
1.完成步骤1 - 9后,我第一次构建应用程序,NB抛出异常:

[EL Info]: 2014-02-15 14:40:08.29--ServerSession(25525711)--EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461
[EL Severe]: 2014-02-15 14:40:12.342--ServerSession(25525711)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Failed to start database 'TourismDB' with class loader sun.misc.Launcher$AppClassLoader@765291, see the next exception for details.
Error Code: 40000
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Failed to start database 'TourismDB' with class loader sun.misc.Launcher$AppClassLoader@765291, see the next exception for details.
Error Code: 40000

当发生这种情况时,我重新启动NB并再次编译JFrameForm,这一次,一切都按预期工作。

为什么会发生这种情况,为什么我必须重新启动NB以使一切正常工作?

1 个答案:

答案 0 :(得分:1)

如果重新启动NetBeans允许您的应用程序成功打开数据库,那么可能发生的事情是您的应用程序的先前副本仍在NetBeans中运行,并且Derby一次只允许一个应用程序打开数据库使用Derby EmbeddedDriver。

您可以通过检查完整的异常来确认:http://wiki.apache.org/db-derby/UnwindExceptionChain

您可以切换到使用ClientDriver,或者可以确保在再次运行应用程序之前完全停止应用程序的上一个副本。