LocalDateTimeを楽観的排他制御のカラムと指定した場合、変換エラーとなる。

179 views
Skip to first unread message

mokkouyou

unread,
Jun 8, 2015, 4:02:19 AM6/8/15
to dbf...@googlegroups.com
お世話になっております、mokkouyouです。

共通カラムにTimestamp(LocalDateTime)のカラムを利用しています。
※更新日時、登録日時

基本コンバートも問題なく動いているのですが、
一転、該当カラム(更新日)を排他用のカラムとして設定すると、コンバートエラーが発生するようになります。

以下詳細(一部ぼかしていますが、結局Timestamp扱いにされる。実際の各種ソースはLocalDateTime、同様の設定の登録日時に関してはエラーにならない)

※すいません。。。途中までデバッグしようとしたのですが、ソース行の位置がずれたりでくじけました


以上よろしくお願いいたします


Failed to write the property.

[Bean Class]
class hoge.db.exentity.AuthenticationHistory
property count: 22
property list: [deleteFlgTrue, process, deleteFlgAsBoolean, customerUser, deleteFlgName, authCd, registerTime, authCdAlias, userCd, deleteFlg, updateUser, updateTime, deleteFlgFalse, authCdAsauth_cd, authCdName, authCdLoginSuccess, authCdLoginFailure, authCdLogout, registerUser, seq, deleteFlgAsFlg, deleteFlgAlias]

[Property]
updateTime
class java.time.LocalDateTime
hash: 5b69f5

[Readable?]
true
public java.time.LocalDateTime hoge.db.bsentity.BsAuthenticationHistory.getUpdateTime()

[Writable?]
true
public void hoge.db.bsentity.BsAuthenticationHistory.setUpdateTime(java.time.LocalDateTime)

[Field?]
null

[Target Object]
class hoge.db.exentity.AuthenticationHistory
AuthenticationHistory:{8, 1, 0, 2015-06-08T16:22:30.811, -----, 2015-06-08T16:22:30.811, -----, null, POST:/login}@e0a583ac

[Wrote Object]
class java.sql.Timestamp
2015-06-08 16:22:32.201
* * * * * * * * * */] with root cause
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.dbflute.util.DfReflectionUtil.invoke(DfReflectionUtil.java:470)
at org.dbflute.helper.beans.impl.DfPropertyDescImpl.setValue(DfPropertyDescImpl.java:231)
at org.dbflute.s2dao.sqlhandler.TnAbstractEntityHandler.updateTimestampIfNeed(TnAbstractEntityHandler.java:282)
at org.dbflute.s2dao.sqlhandler.TnAbstractEntityHandler.updateTimestampIfNeed(TnAbstractEntityHandler.java:273)

kubo

unread,
Jun 8, 2015, 4:15:25 AM6/8/15
to DBFluteユーザの集い
jfluteです

mokkouyouさん、こんにちは

> 該当カラム(更新日)を排他用のカラムとして設定すると、コンバートエラーが発生するようになります。
おおぉぉぉ、見事にバグですね。
フィードバック、ありがとうございます。
最近、すっかり VersionNo の環境ばかりだったので、
日時を使った排他制御が確認できていませんでした。
(日時を使った排他制御のexampleがまだ移植できてない…)

これは、業務で使うとなれば優先度高めですかね?
であれば、sp5として早めのリリースしようかな。
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには dbflute+u...@googlegroups.com
> にメールを送信してください。
> このグループに投稿するには dbf...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/dbflute からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

mokkouyou

unread,
Jun 8, 2015, 4:33:38 AM6/8/15
to dbf...@googlegroups.com
jfluteさん

返事ありがとうございます。

早めに直るに越したことはないなぁ~位の感覚です。
※対応としては排他制御の設定をしばらくはずしておく予定でした(1週間位?)
※それよりかかるようでしたら、VersionNo導入も視野に。(逆にこのカラムの文化はないんです・・・)

ただ、現状考えるとVersionNoも検討した方が安心かもしれないですね。
とはいえ、このままの方が日付の排他制御周りの確認のお役に立てるかも!?


2015年6月8日月曜日 17時15分25秒 UTC+9 jflute:

mokkouyou

unread,
Jun 10, 2015, 5:01:43 AM6/10/15
to dbf...@googlegroups.com
mokkouyouです。

version_noで対応することにしましたー
※日付を排他のために画面と持ち回るの面倒かなーとくじけました(^。^;)

kubo

unread,
Jun 11, 2015, 10:55:59 PM6/11/15
to DBFluteユーザの集い
jfluteです

mokkouyouさん、

> version_noで対応することにしましたー
> ※日付を排他のために画面と持ち回るの面倒かなーとくじけました(^。^;)

おおぉ、VERSION_NOが導入できるならそれが一番ですね。
精度の問題もさることながら持ち回しもそうですね。

一応、1.1.0-sp5 にて、LocalDateTimeでも動くようになっています。
こちらで確認は取れているので特に試さなくてもOKです。
(アップグレードはしてくれると嬉しいです(^^)







2015-06-10 18:01 GMT+09:00 mokkouyou <mokk...@gmail.com>:
> mokkouyouです。
>
> version_noで対応することにしましたー
> ※日付を排他のために画面と持ち回るの面倒かなーとくじけました(^。^;)
>
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。

mokkouyou

unread,
Jun 17, 2015, 5:42:27 AM6/17/15
to dbf...@googlegroups.com
jfluteさん対応ありがとうございましたー
別件片付け次第更新させていただきます(๑•̀ㅁ•́ฅ✧

mokkouyou

unread,
Jun 19, 2015, 12:34:48 AM6/19/15
to dbf...@googlegroups.com
お世話になっております、mokkouyouです。

無事sp5へ移行できました。
sp4への移行の注意点のリネーム等も行いましたが、問題なしです。


※個人的な感覚の問題で、optimisticLockDefinationMap.dfpropのlittleAdjustmentへの引っ越しはやめておきました。
※排他ロックに関するものが見えないのがさらに見えにくくなるのを避けたかったので。
※ただ、littleAdjustmentへの引っ越し、optimisticLockMap.dfpropへのリネームともに試しましたが問題なく動きました。

以上ご報告まで^^

kubo

unread,
Jun 28, 2015, 10:50:07 PM6/28/15
to DBFluteユーザの集い
jfluteです

> 無事sp5へ移行できました。
> sp4への移行の注意点のリネーム等も行いましたが、問題なしです。

ご報告ありがとうございます!

> ※個人的な感覚の問題で、optimisticLockDefinationMap.dfpropのlittleAdjustmentへの引っ越しはやめておきました。
> ※排他ロックに関するものが見えないのがさらに見えにくくなるのを避けたかったので。
> ※ただ、littleAdjustmentへの引っ越し、optimisticLockMap.dfpropへのリネームともに試しましたが問題なく動きました。

りょうかいです。ありがとうございます。
そこは任意の感覚で全く問題ないです。今後ずっと動き続けますので。
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」に登録しているユーザーに送られています。
Reply all
Reply to author
Forward
0 new messages