2009-10-14 32 views
0

我能够使用Apache Derby数据库从NetBeans创建一个简单的JPA Java应用程序。但是,当我试图做同样的SQL Server 2008中,我不断收到以下错误:JPA对使用NetBeans的SQL Server 2008的支持6.7.1

重度:应用程序类sample.DBTestApp无法启动 javax.persistence.PersistenceException:否EntityManager的命名RS6910SQLEXPRESS持久性提供商:3027 ; databaseName = TestPU:以下提供程序: oracle.toplink.essentials.PersistenceProvider oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider 返回null为createEntityManagerFactory。

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83) 
    at sample.DBTestAppView.initComponents(DBTestAppView.java:285) 
    at sample.DBTestAppiew.<init>(DBTestAppiew.java:36) 
    at sample.DBTestApp.startup(DBTestApp.java:19) 

感谢您的帮助调查此事。

回答

2

该问题似乎与为实例名称为SQL Server数据库生成的PersistenceUnit名称。生成的名称是错误的,因为它有反斜杠,并且在将其修改为一个简单的单词(如“TestPU”)而不是生成的“RS6910 \ SQLEXPRESS:3027; databaseName = TestPU”之后,所有内容都开始工作。

我认为这可能是一个NetBeans代码生成SQL Server数据库与实例名称的错误。

但是,正如我们现在知道一种解决方法,我们可以尝试遵循这一点。只需在所有文件中重命名生成的持久化单元名称,即可开始工作。