我正在尝试将 JPA 与 SQL Server 一起使用。 Eclipse 具有很好的工具来映射数据库中的实体,反之亦然。为此,我需要将连接与JPA项目相关联。
所以我创建了一个数据库(命名为“rowcount”)和一个关于这个数据库的表。然后,当我转到Eclipse时,打开JPA透视图,登录数据库(Datasource Explorer / Database Connections),我看不到任何与此特定数据库关联的Schema。
查看Eclipse的“错误日志”视图,每次单击Eclipse上的“Schemas”树视图项时,我都会收到以下错误:
eclipse.buildId=M20130204-1200
java.version=1.7.0_15
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=pt_BR
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product
Error
Tue May 21 10:34:42 BRT 2013
com.microsoft.sqlserver.jdbc.SQLServerException
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'rowcount'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)
at org.eclipse.datatools.connectivity.sqm.internal.core.connection.StatementAdapter.executeQuery(StatementAdapter.java:73)
at org.eclipse.datatools.enablement.msft.internal.sqlserver.loaders.SQL2005SchemaLoader.createResultSet(SQL2005SchemaLoader.java:53)
at org.eclipse.datatools.connectivity.sqm.loader.JDBCSchemaLoader.loadSchemas(JDBCSchemaLoader.java:111)
at org.eclipse.datatools.connectivity.sqm.core.rte.jdbc.JDBCCatalog.loadSchemas(JDBCCatalog.java:101)
at org.eclipse.datatools.connectivity.sqm.core.rte.jdbc.JDBCCatalog.getSchemas(JDBCCatalog.java:64)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.providers.content.layout.vnode.ServerExplorerVNodeContentProviderNav.displaySchemaNodeChildren(ServerExplorerVNodeContentProviderNav.java:126)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.providers.content.layout.AbstractOnDemandContentProviderNav.getChildren(AbstractOnDemandContentProviderNav.java:169)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.providers.content.layout.AbstractOnDemandContentProviderNav.getChildren(AbstractOnDemandContentProviderNav.java:243)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.providers.content.layout.AbstractLayoutProviderNav.getChildren(AbstractLayoutProviderNav.java:85)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.providers.content.impl.ServerExplorerContentProviderNav.load(ServerExplorerContentProviderNav.java:153)
at org.eclipse.datatools.connectivity.sqm.server.internal.ui.explorer.loading.LoadingJob.run(LoadingJob.java:43)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
我在JPA驱动程序属性中使用最新的sqljdbc4.jar和“ Microsoft SQL Server 2008 JDBC驱动程序”。
此错误阻止我在EAR文件中部署应用程序。即使我设法在Weblogic上手动部署它,应用程序也会因以下原因而失败:
openjpa-1.1.1-SNAPSHOT-r422266:957329 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "SELECT N FROM Note N". Error message: The name "Note" is not a recognized entity or identifier. Known entity names: []
奇怪的是,“master”数据库显示了它的一些对象和模式。在SQL Server中,在JDBC驱动程序或Eclipse中是否有解决方法?
答案 0 :(得分:0)
羞辱我。导致该问题的原因是数据库名称是SQL Server的保留字。我重命名后,它工作正常。
请参阅上面的评论。
我真诚地向所有在实际问题上受到压力的人绊倒的人道歉。