読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

【Java】Caused by: javax.persistence.PersistenceException: Query threw SQLException:Unknown column 'Model.create_time' in 'order clause'

Play Framework Java

スポンサードリンク

なんだろーねこのエラー。

Caused by: javax.persistence.PersistenceException: Query threw SQLException:Unknown column 'create_time' in 'order clause' 

訳すだけだと、「どのカラムか曖昧なんで、詳細を指定してもらえません?」って感じかね。joinするとよく起こるらしい。

ちなみにソースはこれ。

/**
 * ページを番号で取得
 * @param pageSource
 * @return
 */
@Override
public Option<List<Model>> findWithPage(Integer pageSourcex) {
    Integer page = PageUtil.rightPage(pageSource);
    return OptionUtil.apply(
            ReservationLog.FINDER.where()
                    .order()
                    .desc("create_time") // これがまずい
                    .findPagingList(20)
                    .getPage(page)
                    .getList());
}

ということで、Model名を指定してみる。が、、、

同じエラーどす。

なんでだろ?ってエラーをよくみたら、生成されるSQLが確認できる。んで、置き換えられていることがわかった。

Query was:
select t0.id ... from model t0 ...

なので、こうする。

/**
 * ページを番号で取得
 * @param pageSource
 * @return
 */
@Override
public Option<List<Model>> findWithPage(Integer pageSourcex) {
    Integer page = PageUtil.rightPage(pageSource);
    return OptionUtil.apply(
            ReservationLog.FINDER.where()
                    .order()
                    .desc("t0.create_time") // これがまずい
                    .findPagingList(20)
                    .getPage(page)
                    .getList());
}

エラーがでなくなりました。しかしわかりづらい。(。・ε・。)ムー

あとこれってなんか違うんじゃね?そもそも自動で生成されるSQLなんてわからないんだし、メンテに向いていないコードだと思うんだけど。。。

分かり次第追記しようと思う。とりま以上。