sequenceのデフォルトは50です

ん?



デフォルトでは以下の設定はS2JDBC-Genには入っておりません。
が、私は設定していました。理由は、テーブルが当たり前のように変更されるからです。
「override = "true"」



overwriteはデフォルトは「false」ですので、AntのXMLに何も記述をしなければ、上書きはされないです
(本家サイト参照)。一般的なプロジェクトでは「false」ですよね。
そして、S2JDBC-Genが生成したDDLを手動にて実行する、という流れだと思います。



今回は、デフォルトに戻します。
「override = "false"」




サブのテーブルの2つでは、IDは自動生成したいので、自動生成の設定を行います。



public class SCompany {
/** comIdプロパティ */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(precision = 5, nullable = false, unique = true)
public Integer comId;
}



public class SDivision {
/** ppIdプロパティ */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(precision = 5, nullable = false, unique = true)
public Integer ppId;
}



特に指定しなければいけないテーブル等はありませんので、「AUTO」を設定しています。



ここでAntを実行します。
そして、Migrateディレクトリーを見てみましょう!Sequenceが作成されていますね。
本家サイトを見ますと、作成後のDDLが格納されるフォルダ名は任意で設定できます
(先に行きたいので、変更ができる事を頭の中にインプットしておきます)。




<SCompany>
create sequence S_COMPANY_COM_ID increment by 50 start with 1;



<SDivision>
create sequence S_DIVISION_PP_ID increment by 50 start with 1;



あれ???



「50」ですね?「1」かと思いました。うーん、今はとりあえずこのまま進みます。
本家サイトをチェックしましたが、Entityのカラムの設定ではなさそうです。
「GeneratedValue」にIncrementの値が設定できるとうれしいですね。



作成されたDDLを実行しないとエラーになるので、手動で実行します。



今度はメインのEntityにサブのオブジェクトを設定します。



public class SUser {

/** userIdプロパティ */
@Id
@Column(length = 5, nullable = false, unique = false)
public String userId;

/** passプロパティ */
@Column(length = 5, nullable = false, unique = false)
public String pass;

/** custNameプロパティ */
@Column(length = 30, nullable = true, unique = false)
public String custName;

/** custNameKanaプロパティ */
@Column(length = 45, nullable = true, unique = false)
public String custNameKana;

/** comIdプロパティ */
@Id
@Column(precision = 5, nullable = false, unique = false)
public Integer comId;



@ReferentialConstraint(enable = false)
@ManyToOne
@JoinColumns(@JoinColumn(name = "COM_ID", referencedColumnName = "COM_ID"))
public SCompany scompany;

/** ppIdプロパティ */
@Column(precision = 5, nullable = true, unique = false)
public Integer ppId;



@ReferentialConstraint(enable = false)
@ManyToOne
@JoinColumns(@JoinColumn(name = "PP_ID", referencedColumnName = "PP_ID"))
public SDivision sdivision;

/** contactAddプロパティ */
@Column(length = 30, nullable = true, unique = false)
public String contactAdd;

/** mailプロパティ */
@Column(length = 100, nullable = true, unique = false)
public String mail;

/** versionプロパティ */
@Version
@Column(precision = 8, nullable = true, unique = false)
public Integer version;

/** registDateプロパティ */
@Temporal(TemporalType.DATE)
@Column(nullable = true, unique = false)
public Date registDate;

/** changeDateプロパティ */
@Temporal(TemporalType.DATE)
@Column(nullable = true, unique = false)
public Date changeDate;

/** deleteDateプロパティ */
@Temporal(TemporalType.DATE)
@Column(nullable = true, unique = false)
public Date deleteDate;
}



今回は外部キーは使用しない方針がプロジェクトでは決まっています。
よって、外部キーを参照しないようにします。



@ReferentialConstraint(enable = false)



上記の設定を行う事で、外部キーがDDLには生成されなくなります。



多VS1の設定は以下のように行い、結合するテーブルのキー項目を書きます。
キー項目を書く時、Entityの属性名ではなく、テーブル名になります。



@ManyToOne
@JoinColumns(@JoinColumn(name = "COM_ID", referencedColumnName = "COM_ID"))
public SCompany scompany;



同様に以下のメイン・サブのテーブルも記述します。

@ReferentialConstraint(enable = false)
@ManyToOne
@JoinColumns(@JoinColumn(name = "PP_ID", referencedColumnName = "PP_ID"))
public SDivision sdivision;



Antを実行します。そして、DDLを参照しますと、外部キーが設定されていない事を
確認する事ができると思います。これで、テストプログラム作成前の準備が完了です。