我将休眠与InteliJ Idea Ultimate一起使用,每次尝试生成表的持久性映射时,它都会使用略有错误的@Table名称来生成它们
My database structure - IMGUR IMAGE
所以我对“活动”表的正确表名应该是:“ [dbo]。[活动]”
但是InteliJ会这样生成它:
@Table(name = "Modules", schema = "dbo", catalog = "test-V4ClientDb")
它会导致无法检索数据的错误:
错误:“-”附近的语法不正确。 org.hibernate.exception.SQLGrammarException:无法提取 结果集 在org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106) 在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) 在org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) 在org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:434) 在org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:186) 在org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121) 在org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86)处 在org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:167) 在org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4004) 在org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) 在org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) 在org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) 在org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278) 在org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) 在org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) 在org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1220) 在org.hibernate.internal.SessionImpl.access $ 1900(SessionImpl.java:203) 在org.hibernate.internal.SessionImpl $ IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2767) 在org.hibernate.internal.SessionImpl $ IdentifierLoadAccessImpl.load(SessionImpl.java:2741) 在org.hibernate.internal.SessionImpl.get(SessionImpl.java:1056) 在hibernate.DatabaseManager.retrieveModuleFromDatabase(DatabaseManager.java:82) 在hibernate.DatabaseManager.populateDatabase(DatabaseManager.java:58) 在Runner.TestRunner.setUp(TestRunner.java:30) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498) 在org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) 在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 在org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 在org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在Cucumber.api.junit.Cucumber.run(Cucumber.java:100) 在org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在org.junit.runner.JUnitCore.run(JUnitCore.java:115) 在org.testng.junit.JUnit4TestRunner.start(JUnit4TestRunner.java:81) 在org.testng.junit.JUnit4TestRunner.run(JUnit4TestRunner.java:69) 在org.testng.TestRunner $ 1.run(TestRunner.java:697) 在org.testng.TestRunner.runJUnitWorkers(TestRunner.java:1004) 在org.testng.TestRunner.privateRunJUnit(TestRunner.java:728) 在org.testng.TestRunner.run(TestRunner.java:629) 在org.testng.SuiteRunner.runTest(SuiteRunner.java:366) 在org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361) 在org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) 在org.testng.SuiteRunner.run(SuiteRunner.java:268) 在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在org.testng.TestNG.runSuitesSequentially(TestNG.java:1244) 在org.testng.TestNG.runSuitesLocally(TestNG.java:1169) 在org.testng.TestNG.run(TestNG.java:1064) 在org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:135) 在org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:112) 在org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:99) 在org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:146) 在org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:383) 在org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:344) 在org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125) 在org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:417) 引起原因:com.microsoft.sqlserver.jdbc.SQLServerException:不正确 '-'附近的语法。 在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254) 在com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608) 在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578) 在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement $ PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508) 在com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869) 在com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243) 在com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218) 在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:434) 在org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70) ...还有56个
是否可以配置InteliJ以使用正确的命名?
我正在使用Microsoft Azure sql服务器。
谢谢。
编辑
如果未指定“目录”,则也可以使用
@Table(name = "Modules", schema = "dbo")
所以问题仍然是,如何配置InteliJ休眠工具以使用正确的命名。
答案 0 :(得分:0)
您似乎无法在目录字符串中使用字符“-”。