Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DBFlute Inquiry: 2024/01/18 from X (Twitter) #198

Closed
jflute opened this issue Jan 16, 2024 · 4 comments
Closed

DBFlute Inquiry: 2024/01/18 from X (Twitter) #198

jflute opened this issue Jan 16, 2024 · 4 comments
Assignees
Labels

Comments

@jflute
Copy link
Collaborator

jflute commented Jan 16, 2024

問い合わせ、ぜひこちらに書いてください。
公開されているので業務情報は伏せた形で投稿をお願いします。

@jflute jflute self-assigned this Jan 16, 2024
@kkhys2
Copy link

kkhys2 commented Jan 17, 2024

Issue を開いていただき、ありがとうございます。
以下、質問内容です。

【実現したいこと】
バージョン 1.2.6 から 1.2.7 へのアップグレード

【利用環境】

  • Java 8
  • Play Framework 2.8.19
  • MySQL 5.1.49
  • DBFlute 1.2.6(バージョン 1.1 へのアップグレード時は互換モードを全開にして移行しました)

【現象の説明】
DBFlute のバージョンを 1.2.6 から 1.2.7 にあげようと以下の作業を行いました。

  1. manage.sh を実行し、94(upgrade)を選択
  2. クラスの自動生成スクリプトを実行(jdbc.sh && generate.sh
  3. アプリケーションを再起動してコンパイル

その後、以下のエラーが発生しました(サービス名等は伏せています)。

[error] .../dbflute/allcommon/DBFluteConfig.java:13:1: パッケージorg.dbflute.bhv.core.context.logmaskは存在しません
[error] org.dbflute.bhv.core.context.logmask.BehaviorLogMaskProvider
[error] .../dbflute/allcommon/DBFluteConfig.java:85:1: シンボルを見つけられません
[error]   シンボル:   クラス BehaviorLogMaskProvider
[error]   場所: クラス [...].dbflute.allcommon.DBFluteConfig
[error] BehaviorLogMaskProvider
[error] .../dbflute/allcommon/DBFluteConfig.java:553:1: シンボルを見つけられません
[error]   シンボル:   クラス BehaviorLogMaskProvider
[error]   場所: クラス [...].dbflute.allcommon.DBFluteConfig
[error] BehaviorLogMaskProvider
[error] .../dbflute/allcommon/DBFluteConfig.java:557:1: シンボルを見つけられません
[error]   シンボル:   クラス BehaviorLogMaskProvider
[error]   場所: クラス [...].dbflute.allcommon.DBFluteConfig
[error] BehaviorLogMaskProvider
[error] .../dbflute/allcommon/DBFluteInitializer.java:4:1: シンボルを見つけられません
[error]   シンボル:   クラス PrologueHook
[error]   場所: パッケージ org.dbflute.hook
[error] org.dbflute.hook.PrologueHook
[error] .../dbflute/allcommon/DBFluteInitializer.java:27:1: シンボルを見つけられません
[error]   シンボル:   クラス PrologueHook
[error]   場所: クラス [...].dbflute.allcommon.DBFluteInitializer
[error] PrologueHook
[error] .../dbflute/allcommon/DBFluteInitializer.java:47:1: シンボルを見つけられません
[error]   シンボル:   クラス PrologueHook
[error]   場所: クラス [...].dbflute.allcommon.DBFluteInitializer
[error] PrologueHook
[error] .../dbflute/allcommon/DBFluteConfig.java:129:1: シンボルを見つけられません
[error]   シンボル:   メソッド unlock()
[error]   場所: クラス org.dbflute.FunCustodial
[error] FunCustodial.unlock
[error] .../dbflute/allcommon/DBFluteConfig.java:130:1: シンボルを見つけられません
[error]   シンボル:   メソッド setNonSpecifiedColumnAccessWarningOnly(boolean)
[error]   場所: クラス org.dbflute.FunCustodial
[error] FunCustodial.setNonSpecifiedColumnAccessWarningOnly
[error] .../dbflute/allcommon/DBFluteConfig.java:131:1: シンボルを見つけられません
[error]   シンボル:   メソッド lock()
[error]   場所: クラス org.dbflute.FunCustodial
[error] FunCustodial.lock
[error] .../dbflute/allcommon/ImplementedSqlClauseCreator.java:165:1: シンボルを見つけられません
[error]   シンボル:   メソッド enableThatsBadTimingWarningOnly()
[error]   場所: タイプorg.dbflute.cbean.sqlclause.SqlClauseの変数 sqlClause
[error] sqlClause.enableThatsBadTimingWarningOnly
[error] .../dbflute/allcommon/ImplementedSqlClauseCreator.java:168:1: シンボルを見つけられません
[error]   シンボル:   メソッド enableOrScopeQueryPurposeCheckWarningOnly()
[error]   場所: タイプorg.dbflute.cbean.sqlclause.SqlClauseの変数 sqlClause
[error] sqlClause.enableOrScopeQueryPurposeCheckWarningOnly
[error] .../dbflute/allcommon/ImplementedSqlClauseCreator.java:196:1: シンボルを見つけられません
[error]   シンボル:   メソッド enableInvalidQueryAllowedWarning()
[error]   場所: タイプorg.dbflute.cbean.sqlclause.SqlClauseの変数 sqlClause
[error] sqlClause.enableInvalidQueryAllowedWarning
[error] .../dbflute/allcommon/ImplementedSqlClauseCreator.java:198:1: シンボルを見つけられません
[error]   シンボル:   メソッド disableInvalidQueryAllowedWarning()
[error]   場所: タイプorg.dbflute.cbean.sqlclause.SqlClauseの変数 sqlClause
[error] sqlClause.disableInvalidQueryAllowedWarning
[error] (Compile / compileIncremental) javac returned non-zero exit code

【考察】

エラー文を見る限りでは BehaviorLogMaskProviderPrologueHookgenerate.sh 実行時に生成されていないことが原因のようです。
これらが生成されればコンパイルエラーは解消すると考えています。
いずれもアプリケーション内では今まで使用していないため 1.2.7 へのアップグレード時には何らかの設定が必要なのでしょうか。

お忙しい中恐れ入りますが、ご教示いただけますと幸いです。
よろしくお願いいたします。

@jflute
Copy link
Collaborator Author

jflute commented Jan 17, 2024

@kkhys2 コメントありがとうございます!
ログを貼り付けて頂き助かります。ログと丁寧な説明でなんとなくわかりました。

DBFluteのアップグレードの方法ですが...

// DBFluteのアップグレード - アップグレード方法 | DBFlute
https://dbflute.seasar.org/ja/environment/upgrade/index.html#way

そして、DBFluteランタイムを最新にしましょう。例えば、Mavenで依存ライブラリを管理しているなら、(手動で) pom.xml を修正します。(修正後のMavenへの反映はアプリのやり方次第で)

DBFluteランタイムも一緒に最新にする必要があります。

DBFlute Engineで自動生成されたコードは、DBFlute Runtimeのクラスを参照しています。
現場情報に依存しないクラスは自動生成する必要がないので、jarファイルとして提供されています。

// DBFluteのインフラ図
https://dbflute.seasar.org/data/model/environment/dbflute-infrastructure-map.png

1.2.7ではBehaviorLogMaskProviderやPrologueHookが追加されました。
DBFlute Runtimeが1.2.6のままではそれらが存在しないのでコンパイルエラーになっているのだと思います。

(恐らく)MavenやGradleでライブラリのバージョンが管理されているかと思いますので、
そちらの方でDBFlute Runtimeを1.2.7にアップグレードをお願いします。
(でも、Play Framework だとビルドツールが違うかも!?)

@kkhys2
Copy link

kkhys2 commented Jan 17, 2024

@jflute
ご返信ありがとうございます!

DBFluteランタイムも一緒に最新にする必要があります。

まさにこれが原因でした。
ドキュメントにも書いてあるにも関わらず初歩的なミスでお時間を取らせてしまい、申し訳ありません。。

ビルドツールは SBT を使用していますが、以下のように書き換えることでコンパイルが通るようになりました。

"org.dbflute" % "dbflute-runtime" % "1.2.6",

↓

"org.dbflute" % "dbflute-runtime" % "1.2.7",

ご丁寧に対応していただき、ありがとうございました。
今後ともよろしくお願いいたします。

@jflute
Copy link
Collaborator Author

jflute commented Jan 17, 2024

@kkhys2 おお、良かったです。
なるほど、SBTでしたか。確かにPlayだとそれですね。

ドキュメントにも書いてあるにも関わらず初歩的なミスでお時間を取らせてしまい、申し訳ありません。。

いやいや、こういうのも聞いて頂いた方がこちらとしても、ドキュメントの分かりづらさとか、
みなさんのどんな構成で使われているのか?などなどとても参考になるのです。

こういったネット上のOSSのコミュニティで問い合わせをするっていうスキル(慣れ)にも繋がりますから、
まだまだそういったことは気にせず問い合わせください(^^。

DBFlute話はいくらでも聞きたいですから、X (Twitter) でまた話しかけてください〜

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants