by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Apr 17 12:09

    nakamura-to on master

    [Gradle Release Plugin] - pre t… Merge pull request #365 from do… (compare)

  • Apr 17 12:09
    nakamura-to closed #365
  • Apr 17 12:00
    nakamura-to opened #365
  • Apr 17 11:58

    nakamura-to on working

    [Gradle Release Plugin] - [skip… (compare)

  • Apr 17 11:58

    nakamura-to on 2.30.0-beta-2

    (compare)

  • Apr 17 11:48

    nakamura-to on change-structure

    (compare)

  • Apr 17 11:48
    nakamura-to closed #364
  • Apr 17 11:41
    nakamura-to synchronize #364
  • Apr 17 11:41

    nakamura-to on change-structure

    Change the artifact id in the d… Format gradle scripts and docum… (compare)

  • Apr 16 15:46
    nakamura-to opened #364
  • Apr 16 10:03

    nakamura-to on virtual-default

    (compare)

  • Apr 16 10:03

    nakamura-to on master

    Support Kotlin's default methods Merge pull request #363 from do… (compare)

  • Apr 16 10:03
    nakamura-to closed #363
  • Apr 16 09:59
    nakamura-to opened #363
  • Apr 16 09:58

    nakamura-to on virtual-default

    Support Kotlin's default methods (compare)

  • Apr 15 16:15

    nakamura-to on master

    new version commit: 2.30.0-SNAP… (compare)

  • Apr 15 11:35
    nakamura-to commented #362
  • Apr 15 10:51
    chichi1091 closed #362
  • Apr 15 10:51
    chichi1091 commented #362
  • Apr 15 10:35
    chichi1091 commented #362
Toshihiro Nakamura
@nakamura-to
Daoのclassファイルは作成されていますか?メニューバーからProject → Cleanを実行したらどうでしょうか?
saki-study1
@saki-study1
Daoのクラスファイルは作成されていますね。プロジェクトのクリーンでも Implのclassファイルは作成されないです。
ImplのclassファイルはDaoと同じとこに作成されますか?
Toshihiro Nakamura
@nakamura-to
私の環境ではプロジェクトのリフレッシュによって「Daoのjavaファイル」がEclipseに認識されると、「Daoのclassファイル」と「Implのjavaファイルとclassファイル」が同時に作成されますね。Implのclassファイルがどこに作成されるかは設定次第です。プロジェクトのプロパティからJava Build Pathの設定を確認してみてください。通常は同じ場所に生成されると思います。
手で修正すればImplが作られるとのことなので注釈処理の設定はちゃんとできてそうですが、リフレッシュやクリーンで注釈処理が動かないということは「Build Automatically」の設定を切っていますか?もしそうなら有効にするか、リフレッシュした後に「Build Project」をしてみてください。
saki-study1
@saki-study1

こちらの環境では
DBに33テーブルあります。
doma-genを実行すると「.apt_generated」に
daoImpl.javaが8ファイル、entityのjavaファイルが1ファイルできます。
(リフレッシュはしています。)

プロジェクトプロパティのクラスファイルの出力は「build/classes」としております。
classes配下にはDao.classが作成されます。Implのclassはありません。
entityのクラスファイルも作成されています。

Implが生成されていないDaoを手修正して保存すると
「.apt_generated」にファイルは作られますが、
「build/classes」にImplのクラスは作成されません。

メニューバーのプロジェクトの自動的にビルドにはチェックは入っております。

Toshihiro Nakamura
@nakamura-to
うーむ、何かがおかしいですね。Eclipseのプロジェクトをエクスポートして共有してもらう事ってできますか?Eclipseのバージョンも教えていただきたいです。
saki-study1
@saki-study1
プロジェクトはどこで共有すればよろしいでしょうか?eclipseは最新の2019-09を使用しています。
Toshihiro Nakamura
@nakamura-to
DropBoxとかGoogleDriveなどに置いてもらってここでリンクを共有するというのはどうでしょうか?
saki-study1
@saki-study1
Googleドライブにアップはしたのですがどう共有すればいいのでしょうか?
sak!@プログラミング
@saki_study111_twitter

アカウントが変わってしまいましたが、
https://drive.google.com/file/d/1hl0rODhgsSCjP-BfASewQCgeLmL-y02v/view?usp=sharing

これで確認できますか?

Toshihiro Nakamura
@nakamura-to
このリンクで確認できますがアプリ部分のwarファイルではなくEclipseのプロジェクト全体をzipファイルにして共有して欲しいです(Eclipseの設定がどうなっているかを確認するためです)。 Eclipseのプロジェクトを右クリックしてExport -> General -> Archive Fileと選んでzip化してみてください。
sak!@プログラミング
@saki_study111_twitter
お手数おかけして申し訳ないです。
Toshihiro Nakamura
@nakamura-to
Doma1.38.0をJava11で動かそうとして失敗しているようです。Doma1系はJava6〜8までしかサポートしていません。Java11で動かしたいならばDoma2系を使ってください。バージョンのサポート状況はこちらを参照ください。
https://github.com/domaframework/doma/blob/master/README.md#compatibility-matrix
今回のようなケースですが、EclipseのError Log Viewや.logファイルに何かしらのスタックトレースが出力されているはずですので、これらをチェックしてもらうと解決しやすいかもしれません。
Toshihiro Nakamura
@nakamura-to
lombokを使っているようですが、lombokによるクラスファイル生成は成功していますか?Domaが中途半端なコード出力で止まっている原因の一つにlombokの影響があるように見えます。もしまだなら先にlombokのビルドを成功させた方が良いかもしれません(Eclipseにインストールするなど)。l私の手許ではlombokのインストールとJava8の利用だけでいただたいプロジェクトをビルドエラーがない状態にできました。
sak!@プログラミング
@saki_study111_twitter

eclipseのバージョンを上げたことによって
javaも最新化にしてみようと思ったところが一つの原因ですね。

lombokがジャマしていますか。
これもeclipseのバージョンを変更したからですかね?
eclipseもFull Editionで入れているため、lombokは入っているような気も・・・
その設定はどこで確認できますか?

またeclipse自体にlombokを入れるということは、
lombok.jarをlibに入れなくてもよく、
また別プロジェクトでmavenを使用している場合でも不必要になりますでしょうか?

お送りしたリンク先を編集可能の共有を貼ったのでアップしていただけると
非常に助かるのですが可能でしょうか?

Toshihiro Nakamura
@nakamura-to
Lombokのインストール方法やインストール済みかどうかの確認方法はLombokのページに記載がありますね。
https://projectlombok.org/setup/eclipse
Eclipseにインストールしていたとしてもlombok.jarはコンパイル時にも実行時にも必要だという認識です。LombokのインストールはEclipseのプロジェクトの設定ファイルには反映されないので特にアップできるものがないです。
sak!@プログラミング
@saki_study111_twitter
ありがとうございます。
確認してみます。
sak!@プログラミング
@saki_study111_twitter
lombok.jarはお渡ししたプロジェクトに含んでいたものをインストールされましたでしょうか?それともmaven等にある最新をインストールされましたでしょうか?
sak!@プログラミング
@saki_study111_twitter
eclipseにlombokをインストールしてみましたがうまくっていないのか
何も変わっていないような気がしています。
eclipse.exeがあるフォルダにlombokはコピーされ
eclipse.iniにlombokのパスは記載されています。
Toshihiro Nakamura
@nakamura-to
プロジェクトに含まれているlombok.jarのインストールは試みましたが新しいバージョンのeclipseを認識できないようでしたので、lombokのサイトからダウンロードできる最新版を使いました。
sak!@プログラミング
@saki_study111_twitter

あまりにハマっていますので一からやり直しました。
・eclipse(2019-12)をインストール
・現プロジェクトのlibに入っているlombokをeclipseに入っているものに置き換え
・dao、entity、.apt_generated配下のファイルを削除
・コンパイルし警告、エラーがないことを確認
・doma-genを実行、プロジェクトのリフレッシュ
・dao、entityにファイルが作成されていることを確認。
・.apt_generatedにはやはり中身のないファイルしか作成されません。
※手動でDaoを修正するとImplは作成されますが、クリーンを行うと消えてしまいます。

何か手順に間違いはありますでしょうか?

Toshihiro Nakamura
@nakamura-to
手順の問題ではないかもしれませんね。EclipseのError Log Viewや.logファイルを確認してもらえないでしょうか。ビルドが走るタイミングで何かエラーが出ていると思います。
sak!@プログラミング
@saki_study111_twitter

eclipseのエラーログを確認したところ、エラーが出力されていることが確認できました。

こちらでも調べてはみますが共有しますので一度確認してもらえますでしょうか?

https://drive.google.com/open?id=1tRoNoUBjUHsksEDk_UBx8oYFzKHOJqUt

Toshihiro Nakamura
@nakamura-to
原因はJava9以上を使っているからだと思います。Doma1が対応しているJava6〜8を使ってみてください。もしプロジェクトでちゃんとJava6〜8を使っているのにこのエラーが出るならEclipseもJava6〜8で起動してみてください。
sak!@プログラミング
@saki_study111_twitter

プロジェクトはjava8を指定していました。
eclipseのバージョンを上げたことにより、
eclipse起動バージョンが8以上になっていたのかもしれません。
(前はjava8で起動するバージョンをたまたま使っていた可能性が)

最新のeclpseでもjava8を指定することにより
domaが正しく起動しました。ありがとうございます。

もしdoma2を使う場合でもeclipseの起動バージョンはjava8でいいのでしょうか?

Toshihiro Nakamura
@nakamura-to
お、解決しましたか。良かったです。Doma2はJava8以上をサポートしています。Eclipseの起動バージョンもJava8以上であれば大丈夫です。
sak!@プログラミング
@saki_study111_twitter

ありがとうございます。

1つ疑問に思ったことがあります。
doma-genで自動生成をした時のdaoImplのエラーについてなのですが
javaDestDirに「src/main/java」を指定して
daoPackageNameに「dao」、entityPackageName「entity」にして
生成するとコンパイルエラーになります。
「db.dao」「db.entity」のように1階層下げるとコンパイルエラーになりません。

1階層下にしないといけないものなのでしょうか?

Toshihiro Nakamura
@nakamura-to
いえ、そういう制約を設けているつもりはないです。コンパイルエラーとは具体的にどう言ったエラーですか?
sak!@プログラミング
@saki_study111_twitter

エラー内容は「_MUser は解決できないか、フィールドではありません MUserDaoImpl.java /struts2-test/.apt_generated/dao」です。

・Implのエラー部分の抜粋です。
org.seasar.doma.jdbc.query.AutoInsertQuery<entity.MUser> query = getQueryImplementors().createAutoInsertQuery(method1, entity._MUser.getSingletonInternal());

※「_MUser」の部分がエラーになっております。

Toshihiro Nakamura
@nakamura-to
エラーが発生しているメソッドのパラメータ名がentityでパッケージ名と衝突しているからですね。階層なしのentityというパッケージ名を避けてもらうのが良さそうです。Doma-GenやDomaの問題とは認識していません。
sak!@プログラミング
@saki_study111_twitter
ありがとうございます。
お手数おかけしました。
sak!@プログラミング
@saki_study111_twitter
すいません。
eclipseのmaveプロジェクトでdomaを使用するときに、
プロジェクト・プロパティ→Javaコンパイラ→注釈処理→ファクトリー・パスにdomaのjarを読み込ますにはどのような設定をすればよろしいのでしょうか?
Toshihiro Nakamura
@nakamura-to
Gradleの場合は次のようなコードでeclipseタスクを実行する際にEclipseの設定ファイルを変更するようなことやっています。
https://github.com/domaframework/simple-boilerplate/blob/2.26.0/eclipse.gradle
ただMavenの場合の方法は私は知らないです。Doma以外でも注釈処理を使っているプロダクトでは必要になることですので何らかの方法は必ずあると思いますが。
sak!@プログラミング
@saki_study111_twitter
遅くなり申し訳ございません。
ちょっと試してみます。
みぞやん
@mizoyan432_twitter
Doma2でsqlファイルを元にDaoを自動的に作成するようなことは可能でしょうか?
S2Daoのsqlファイルはあるため、これをMETA-INFのDaoパッケージにsqlファイルをリネームして配置しました。
このsqlファイルを元にDaoと戻りのオブジェクトが生成できると良いのですが。
Toshihiro Nakamura
@nakamura-to
技術的に可能かどうかで言えば可能だと思います(ただ、Domaでそういう機能をサポートしている訳ではないです)。
まずDaoインタフェースの名前はSQLファイルが格納されたディレクトリから、Daoメソッドの名前はSQLファイルの名前で決まりますね。
Daoメソッドのパラメータ名はSQLファイルのバインド変数を解析すれば引っ張って来れます。S2Dao用のSQLファイルということなので解析するコードはS2Daoから借用するのが良さそうです。
メソッドの戻り値のクラスをどう決めるかは工夫が必要だと思います。既存のクラスを使うか新規のクラスを使うかはSQLファイルから読み取れないからです。ただ言えることは、カラムに相当するフィールドの型情報を知るためにSQLを一度DBへ投げてメタデータを取得するといいと思います。そのままは使えないかもしれませんが、Doma-GenでSQLファイルから戻り値のクラスを生成する機能はあります。
https://doma-gen.readthedocs.io/en/stable/gen/#generating-an-entity-class-file-from-an-sql
Nguyen Vinh
@NguyenV76233550_twitter
image.png
Help me plzz
Toshihiro Nakamura
@nakamura-to
みぞやん
@mizoyan432_twitter
Doma-gen-pluginについての質問です。DB上の方がJavaのどの型に変換されるかを知る方法はありますか?特にNumber型が精度によってどの型にマッピングされるのかを知りたいです。
みぞやん
@mizoyan432_twitter
ナンバー型ではなくてdecimal型でした
Toshihiro Nakamura
@nakamura-to
使っているDBはなんでしょう?Oracleなどはこの辺りで精度見て条件分岐しています。他のDBも同じパッケージにあるXxxGenDialectでマッピングしています。
https://github.com/domaframework/doma-codegen-plugin/blob/master/codegen/src/main/java/org/seasar/doma/gradle/codegen/dialect/Oracle11CodeGenDialect.java#L118
みぞやん
@mizoyan432_twitter
ms sqlserverです
みぞやん
@mizoyan432_twitter
なるほどー。Mssql2008CodeGenDialect#getMappedPropertyClassName(ColumnMeta)
を拡張してsuper.getMappedPropertyClassName(columnMeta)より前に設定してしまえば良さそうですね
Toshihiro Nakamura
@nakamura-to
そうですね。そのクラスは差し替え可能になってるので自由にカスタマイズしてもらえればと思います
みぞやん
@mizoyan432_twitter
ありがとうございました