我想使用 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
提交
取消