我想使用 DAO 将生成的 Pojo 添加到数据库。但我收到异常并且不知道如何解决它。我尝试在每个表前面添加一个 Public.Troop 。将部队插入到 DAO 用法中:TroopDao dao = new TroopDao(new DefaultConfiguration().set(SQLDialect.SQLITE).set(database.getConnection()));Troop initial = new Troop(1, 100, 120, 120.2, 11.2, 12.0, 13.0, 6245.0, 1534.0, 1364.0, 121235.3, 125.3, 51.3);dao.insert(initial);使用的数据库文件:CREATE TABLE IF NOT EXISTS TROOP( id INTEGER PRIMARY KEY AUTOINCREMENT, current_health INTEGER NOT NULL, max_health INTEGER NOT NULL, pos_x DOUBLE NOT NULL, pos_y DOUBLE NOT NULL, normal_speed DOUBLE NOT NULL, street_speed DOUBLE NOT NULL, difficult_terrain_speed DOUBLE NOT NULL, close_combat_range DOUBLE NOT NULL, ranged_combat_range DOUBLE NOT NULL, normal_view_distance DOUBLE NOT NULL, disadvantaged_view_distance DOUBLE NOT NULL, advantaged_view_distance DOUBLE NOT NULL);CREATE TABLE IF NOT EXISTS ARMY( id INTEGER, hq INTEGER, troop INTEGER, FOREIGN KEY(hq) REFERENCES TROOP(id), FOREIGN KEY(troop) REFERENCES TROOP(id), UNIQUE(hq, troop), PRIMARY KEY (id, hq, troop));JOOQ一代,我也尝试过unqualifiedSchema = main: Configuration configuration = new Configuration() .withGenerator(new Generator() .withDatabase(new Database() .withName("org.jooq.meta.extensions.ddl.DDLDatabase") .withIncludes("ARMY | TROOP") .withOutputSchemaToDefault(Boolean.TRUE) .withProperties(new Property() .withKey("unqualifiedSchema") .withValue("none"), new Property() .withKey("scripts")
1 回答
浮云间
TA贡献1829条经验 获得超4个赞
根据 jOOQ 3.12,它DDLDatabase
会解析您的 SQL 脚本,将它们转换为 H2 并针对内存中的 H2 数据库运行它们,该数据库用作PUBLIC
默认模式,从代码生成器的角度来看,所有表现在都位于该数据库中。
SQLite 中不存在这样的模式,这就是您收到所看到的错误的原因。jOOQ 3.12 通过支持一个新属性修复了这个问题unqualifiedSchema
,该属性允许在 DDL 脚本中指定所有不合格表的隐含模式。默认情况下,假设这映射到PUBLIC
H2 中,PUBLIC
则假定为“默认模式”。因此,要解决此问题,只需升级到 jOOQ 3.12 即可。
注意:您已经在使用此标志,但没有使用 jOOQ 3.12。该功能在 2011 年 11 月 3 日尚未提供。
添加回答
举报
0/150
提交
取消