Java 在jooq中使用DAO时发生DataAccessException
我想使用DAO将生成的Pojo添加到数据库中。 但我收到一个异常,不知道如何解决它 我试着在每一张桌子前增加一个公众的队伍 将部队插入DAO ussage: TroopDao dao=new TroopDao new DefaultConfiguration.SetSqlDialante.SQLITE.setdatabase.getConnection; 初始兵力=新兵力1,100,120,120.2,11.2,12.0,13.0,6245.0,1534.0,1364.0,121235.3,125.3,51.3; 道。插入性; 已使用的数据库文件: 如果不存在,则创建表 id整数主键自动递增, 当前_运行状况整数不为空, 最大运行状况整数不为空, pos_x DOUBLE不为空, 位置y双精度不为空, 正常双速不为零, 街道双速不为空, 困难地形速度加倍不为零, 近战距离双倍不为空, 远程\u战斗\u距离加倍不为空, 正常视距双精度非空, 查看距离双精度非空, 优势视图距离加倍不为空 ; 如果不存在,则创建表 id整数, hq整数, 部队整型, 外键, 外国钥匙兵, 统一指挥部、部队、, 主键id,总部,部队 ; JOOQ一代,我还尝试了unqualifiedSchema=main: 配置=新配置 .带发电机或新发电机 .WithDatabase新建数据库 .withNameorg.jooq.meta.extensions.ddl.ddl数据库 .包括军队 .withOutputSchemaToDefaultBoolean.TRUE .有物业新物业 .使用KeyUnqualifiedSchema .没有价值, 新财产 .WithKeyScript .withValue/db/schema.sql .withGeneratenew Generate .WithPojos.TRUE .WithDeprecationUnknownTypesBoolean.FALSE .withImmutableInterfacesBoolean.TRUE .用daosboolean.TRUE .WithTarget新目标 .WithPackageName.leslie.generals.server.persistence.jooq .withdirectorygeneralserver/src/main/java; GenerationTool.generateconfiguration; Databaseclass只是一个返回基本数据库连接的单例: @EqualsAndHashCode @托斯特林 @吸气剂 公共类数据库{ 公共静态最终字符串DEFAULT_DB_URL=jdbc:sqlite:; @非空 私有最终字符串url; 专用终端连接; 私有静态数据库实例; 公共静态数据库获取{ iInstance==null{ 实例=新数据库默认值\数据库\ URL; } 返回实例; } 专用数据库字符串url{ 试一试{ this.connection=DriverManager.getConnectionurl; }捕获SQLE异常{ 抛出新的初始化异常无法获取数据库连接,e; } 初始化; this.url=url; } 私有无效初始化{ 最终字符串troopSchema=如果不存在,则创建表+ id整数主键自动递增+ 当前_运行状况整数不为空+ 最大运行状况整数不为空+ pos_x DOUBLE不为空+ 位置y双精度不为空+ 正常双速不为零+ 街道双速不为空+ 困难地形速度加倍不为零+ 近战距离双倍不为空+ 远程\u战斗\u距离加倍不为空+ 正常视距双精度非空+ 查看距离双精度非空+ 优势视图距离加倍不为空+ ;; 最终字符串armySchema=如果不存在,则创建表+ id整数+ hq整数+ 部队整型+ 外键+ 外国钥匙兵+ 统一指挥部、部队、+ 主键id,总部,部队+ ;; 请尝试PreparedStatement sql=connection.prepareStatementtroopSchema{ sql.execute; }捕获SQLE异常{ 抛出新的初始化异常不能初始化部队,e; } 请尝试PreparedStatementSQL=connection.prepareStatementarmySchema{ sql.execute; }捕获SQLE异常{ 抛出新的初始化异常不能ini 武装化,e; } } } 错误,当我使用基于文件的数据库并访问它时,所需的表似乎就在那里:Java 在jooq中使用DAO时发生DataAccessException,java,database,sqlite,jooq,Java,Database,Sqlite,Jooq,我想使用DAO将生成的Pojo添加到数据库中。 但我收到一个异常,不知道如何解决它 我试着在每一张桌子前增加一个公众的队伍 将部队插入DAO ussage: TroopDao dao=new TroopDao new DefaultConfiguration.SetSqlDialante.SQLITE.setdatabase.getConnection; 初始兵力=新兵力1,100,120,120.2,11.2,12.0,13.0,6245.0,1534.0,1364.0,121235.3,12
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.jooq.tools.reflect.Reflect (file:/home/leslie/.m2/repository/org/jooq/jooq/3.11.11/jooq-3.11.11.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class)
WARNING: Please consider reporting this to the maintainers of org.jooq.tools.reflect.Reflect
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
23:32:56.084 [main] INFO org.jooq.Constants -
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@@@@@@@@@@@@@@@@ @@ @@ @@@@@@@@@@
@@@@@@@@@@ @@@@ @@ @@ @@@@@@@@@@
@@@@@@@@@@ @@ @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@ @@ @@@@@@@@@@
@@@@@@@@@@ @@ @@ @@@@ @@@@@@@@@@
@@@@@@@@@@ @@ @@ @@@@ @@@@@@@@@@
@@@@@@@@@@ @@ @ @ @@@@@@@@@@
@@@@@@@@@@ @@ @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Thank you for using jOOQ 3.11.11
23:32:56.093 [main] DEBUG org.jooq.tools.LoggerListener - Executing query : select PUBLIC.TROOP.ID from PUBLIC.TROOP
23:32:56.099 [main] DEBUG org.jooq.tools.LoggerListener - Exception
org.jooq.exception.DataAccessException: SQL [select PUBLIC.TROOP.ID from PUBLIC.TROOP]; [SQLITE_ERROR] SQL error or missing database (no such table: PUBLIC.TROOP)
at org.jooq_3.11.11.SQLITE.debug(Unknown Source)
at org.jooq.impl.Tools.translate(Tools.java:2430)
at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:832)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:364)
at org.jooq.impl.AbstractResultQuery.fetch(AbstractResultQuery.java:323)
at org.jooq.impl.SelectImpl.fetch(SelectImpl.java:2700)
at me.leslie.generals.server.repository.TroopJooqRepository.nextID(TroopJooqRepository.java:47)
at me.leslie.generals.server.repository.TroopJooqRepository.create(TroopJooqRepository.java:60)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at org.jooq.lambda.SeqImpl.collect(SeqImpl.java:190)
at me.leslie.generals.server.repository.TroopJooqRepositoryTest.initializeTroops(TroopJooqRepositoryTest.java:38)
at me.leslie.generals.server.repository.TroopJooqRepositoryTest.getSomeTroops(TroopJooqRepositoryTest.java:152)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:132)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:124)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:74)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: PUBLIC.TROOP)
at org.sqlite.core.DB.newSQLException(DB.java:941)
at org.sqlite.core.DB.newSQLException(DB.java:953)
at org.sqlite.core.DB.throwex(DB.java:918)
at org.sqlite.core.NativeDB.prepare_utf8(Native Method)
at org.sqlite.core.NativeDB.prepare(NativeDB.java:134)
at org.sqlite.core.DB.prepare(DB.java:257)
at org.sqlite.core.CorePreparedStatement.<init>(CorePreparedStatement.java:47)
at org.sqlite.jdbc3.JDBC3PreparedStatement.<init>(JDBC3PreparedStatement.java:30)
at org.sqlite.jdbc4.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:19)
at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:35)
at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:241)
at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:205)
at org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109)
at org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73)
at org.jooq.impl.AbstractResultQuery.prepare(AbstractResultQuery.java:239)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:322)
... 77 common frames omitted
根据jOOQ 3.12,DDL数据库解析SQL脚本,将其转换为H2,并针对内存中的H2数据库运行它们,H2数据库使用PUBLIC作为默认模式,从代码生成器的角度来看,所有表现在都位于该数据库中
这样的模式在SQLite中不存在,这就是为什么会出现所看到的错误。jOOQ 3.12通过支持一个新的unqualifiedSchema属性修复了这一问题,该属性允许在DDL脚本中指定所有非限定表的隐含模式。默认情况下,假定此映射到H2中的PUBLIC,则假定PUBLIC为默认模式。因此,要解决这个问题,只需升级到JOOQ3.12。请参阅此处的更多详细信息:
注意:您已经在使用此标志,但没有使用JOOQ3.12。它在3.11.11中还不可用