Sequenceを対応してみました

taediumさんより、多くのアドバイスをもらっております。とても感謝しています。
1つ1つ、対応していきます。

まずはEntityを作ります。


@Entity
public class SPrivilege {

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

    /** ppIdプロパティ */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(precision = 5, nullable = false, unique = true )
    public Integer menuId;
    
    /** authorityプロパティ */
    @Column(length = 1, nullable = true, unique = false)
    public String authority;
    
    /** 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;    
}


実行します。結果、テーブル・ユニーク(今回はユニークをTrueにしています)・ダンプ・シーケンス、全てDDLが作成されました。この作成されたDDLOracleに反映します。

私は「SPrivilege」クラスしか作成していません。「SPrivilegeNames」は自動で作成されております。
つまり、Namesクラスは使用しなくても、問題なく、Entityだけが必要なのです(Entityパッケージを見ますと、EntityとNames両方があるので、両方作成しない、と思うかもしれないので)。

では、Sequenceの初期値・増分値を設定します。
既に作成していますクラスを使用します。

@Entity
public class SCompany {

/** comIdプロパティ */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@SequenceGenerator(initialValue = 1, allocationSize = 2, name = "S_COMPANY_COM_ID")
@Column(precision = 5, nullable = false, unique = true)
public Integer comId;
}

@SequenceGenerator(initialValue = 1, allocationSize = 2, name = "S_COMPANY_COM_ID")

この設定をしていなかった為、デフォルトの50が設定されていました(ちなみに、50という値は適当に付けた値ではなく、パフォーマンスを考慮し、作成されています)。
私の方では、滅多に使用されない処理ですので、「2」を設定し、実行してみます。

結果、シーケンスが作成されます。

create sequence S_COMPANY_COM_ID increment by 2 start with 1;

大丈夫です。

タスクに追加しても良い、という事でしたので、タスクにも追加してみます。


...

ほかは何もしないで、実行します。結果は大丈夫ですので、DDLを確認します。

先に実行した S_COMPANY_COM_ID シーケンスは値が変更されていませんでした。
つまり、個別とタスクの設定では、個別の設定の方が反映されるようです。

では、Entityを作成したクラスのDDLを見てみます。
create sequence S_PRIVILEGE_MENU_ID increment by 50 start with 1;

あれ?
変わっていないです。こちらの環境では2つのスキーマーに対応している為、もう1つの対応が必要かもしれないです。




こちらにも対応を増やします。だめでした。。。

Entityのアノテーションかもしれないです。

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

現在はこのようになっていますので、

@GeneratedValue

のみにします。結果はだめでした。。。

では、sequenceをautoに変更してみます。結果は同じでした。

では、strategy = GenerationType.AUTOが入っています@GeneratedValueを全て
@GeneratedValue に変更してみます。結果は同じでした。

先に「個別とタスクの設定では、個別の設定の方が反映されるようです」と書きましたが、現段階では、結論にはならないですね。
個別に設定する事で確認はできましたので、先に進めていきます。