3
按啓動說明我是能夠成功地生成JOOQ這最終看起來像這樣的表類:JOOQ基於現有類創建表?
public class AgencyMeta extends TableImpl<AgencyMetaRecord> {
private static final long serialVersionUID = 214852552;
/**
* The reference instance of <code>PUBLIC.AGENCY_META</code>
*/
public static final AgencyMeta AGENCY_META = new AgencyMeta();
/**
* The class holding records for this type
*/
@Override
public Class<AgencyMetaRecord> getRecordType() {
return AgencyMetaRecord.class;
}
/**
* The column <code>PUBLIC.AGENCY_META.ID</code>.
*/
public final TableField<AgencyMetaRecord, Long> ID = createField("ID", org.jooq.impl.SQLDataType.BIGINT.nullable(false).defaulted(true), this, "");
/**
* The column <code>PUBLIC.AGENCY_META.AGENCY_ID</code>.
*/
public final TableField<AgencyMetaRecord, Long> AGENCY_ID = createField("AGENCY_ID", org.jooq.impl.SQLDataType.BIGINT.nullable(false), this, "");
/**
* The column <code>PUBLIC.AGENCY_META.KEY</code>.
*/
public final TableField<AgencyMetaRecord, String> KEY = createField("KEY", org.jooq.impl.SQLDataType.VARCHAR.length(255).nullable(false), this, "");
/**
* The column <code>PUBLIC.AGENCY_META.VALUE</code>.
*/
public final TableField<AgencyMetaRecord, String> VALUE = createField("VALUE", org.jooq.impl.SQLDataType.CLOB, this, "");
/**
* Create a <code>PUBLIC.AGENCY_META</code> table reference
*/
public AgencyMeta() {
this("AGENCY_META", null);
}
/**
* Create an aliased <code>PUBLIC.AGENCY_META</code> table reference
*/
public AgencyMeta(String alias) {
this(alias, AGENCY_META);
}
private AgencyMeta(String alias, Table<AgencyMetaRecord> aliased) {
this(alias, aliased, null);
}
private AgencyMeta(String alias, Table<AgencyMetaRecord> aliased, Field<?>[] parameters) {
super(alias, Public.PUBLIC, aliased, parameters, "");
}
/**
* {@inheritDoc}
*/
@Override
public Identity<AgencyMetaRecord, Long> getIdentity() {
return Keys.IDENTITY_AGENCY_META;
}
/**
* {@inheritDoc}
*/
@Override
public UniqueKey<AgencyMetaRecord> getPrimaryKey() {
return Keys.CONSTRAINT_A0;
}
/**
* {@inheritDoc}
*/
@Override
public List<UniqueKey<AgencyMetaRecord>> getKeys() {
return Arrays.<UniqueKey<AgencyMetaRecord>>asList(Keys.CONSTRAINT_A0, Keys.CONSTRAINT_A0F);
}
/**
* {@inheritDoc}
*/
@Override
public List<ForeignKey<AgencyMetaRecord, ?>> getReferences() {
return Arrays.<ForeignKey<AgencyMetaRecord, ?>>asList(Keys.CONSTRAINT_A0FC);
}
/**
* {@inheritDoc}
*/
@Override
public AgencyMeta as(String alias) {
return new AgencyMeta(alias, this);
}
/**
* Rename this table
*/
public AgencyMeta rename(String name) {
return new AgencyMeta(name, null);
}
}
顯然,它具備所有條件,創建一個表,並在部分我可以這樣做這樣的:
create.createTable(PRODUCT).column(PRODUCT.ID, SQLDataType.BIGINT.nullable(false).defaulted(true)).execute();
,...等
當程序首次啓動時,我想建當場H2數據庫。
有沒有辦法在一次性命令中創建一個表或者甚至是整個數據庫?它似乎應該基於提供的內容。
謝謝。這幫助我知道我是否在黑暗中與這個想法相撞。在時間限制結束後我會接受你的回答。 – Pipsqweek
您可以檢查表是否存在,然後使用jooq從類路徑資源執行DDL或準備好的腳本。數據庫創建是一項簡單的任務,但版本之間的遷移要困難得多(數據遷移,類型對話等) –