Doma 1.27.1 をリリース

Doma 1.27.1 をリリースしました。

ダウンロードはこちらからどうぞ。

Mavenをご利用の方はこちらを参照ください。

以前のバージョンから移行するには移行ガイドを参照ください。

今回は、小さめのバグ修正のみを含んでいます。

リリースノート

Bug

  • [DOMA-274] - [Core] 型引数で解決されるべき型がSQLの式コメント内で別の型として認識され評価に失敗する問題を解決しました。
  • [DOMA-275] - [Core] Domaが内部で使っているClass.forName(name)が式コメントの評価部分にまだ残っている問題を解決しました。
  • [DOMA-276] - [Core] SQLの式コメントの中でオーバーライドしているメソッドを呼び出すとDOMA4073のエラーになる問題を解決しました。

機能紹介: SQLの式コメント内での型引数の扱い

DOMA-274について簡単に解説します。

継承関係を持つこんなクラスが2つあるとします。

public abstract class AbstractDomain<V> {
    protected V value;

    protected AbstractDomain(V value) {
        this.value = value;
    }

    V getValue() {
        return value;
    }
}
@Domain(valueType = String.class)
public class PhoneNumber extends AbstractDomain<String> {
    public PhoneNumber(String value) {
        super(value);
    }
}

このとき、AbstractDomainの型パラメータVの実型引数はStringです。


これまで、SQLの式コメントにおいてジェネリックな型の値(AbstractDomainのvalue)にアクセスする場合、実型引数を認識していませんでした。つまり、次のような式コメントは、「Object型をパラメータにもつ@isNotEmptyメソッドが見つかりません」といったエラーになっていました。

select * from person where 
/*%if @isNotEmpty(phoneNumber.value) */ 
  phoneNumber = /* phoneNumber */'03456789'
/*%end */

今回の修正で実型引数を認識するようにしたので、String型をパラメータにもつ@isNotEmptyメソッドがちゃんと使えるようになりました。