mailtotakaf
@mailtotakaf (tak)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

DOMA4019が解決できない

いろいろ様々英語のサイトなどもググったりして努力してみましたが、気づいたら25日ほどこれだけに取り組んでてついに力尽きました。。

(ちなみにsrc/main/resources以下にMETA-INFフォルダをコピーして試してみたのですがダメみたいです。)

image.png

ソースは以下になります。

cmsApplication.java
@SpringBootApplication
public class cmsApplication {

    public static void main(String[] args) {
        SpringApplication.run(cmsApplication.class, args);
    }
}
UsersController.java
@RestController
public class UsersController {

    @Autowired
    UsersService usersService;

    @GetMapping("/selectAll")
    public List<User> selectAll(){
        return usersService.selectAll();
    }
}
UsersDao.java
@ConfigAutowireable
@Dao
public interface UsersDao {

    @Select
    List<User> selectAll();

}
@Entity
@Data
public class User {

    @Id
    private long id;

    private String first_name;

    private String last_name;

    private String email;

}
UsersService.java
@Service
public class UsersService {

    @Autowired
    UsersDao usersDao;

    public List<User> selectAll() {
        return usersDao.selectAll();
    }
}
build.gradle
plugins {
    id 'org.springframework.boot' version '2.5.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'cms'
version = '1'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'mysql:mysql-connector-java'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    implementation 'org.seasar.doma.boot:doma-spring-boot-starter:1.4.0'
    annotationProcessor 'org.seasar.doma:doma-processor:2.35.0'
}

test {
    useJUnitPlatform()
}

jarの設定
image.png

image.png

image.png

一体私の人生において何がいけなかったのでしょうか?

0

4Answer

エラ〜メッセージに問題が書かれています。

The file "META-INF/cms/dao/UsersDao/selectAll.sql" is not found in classpath.
The absolute path is "C¥dev¥Spring¥cms¥bin¥default¥META-INF¥cms・・・" (これ以上は画像からは読み取れない)

"C¥dev¥Spring¥cms¥bin¥default"フォルダ以下に"META-INF¥〜"のsqlファイルを置いてみると何か違った結果が得られるかもしれません。

Gradle を使ったビルドに従って、sqlの検索パスを変更することが定石ですが、Spling Bootの場合にも必要なのかはよくわかりません。

1Like

Comments

  1. @mailtotakaf

    Questioner

    ありがとうございます!
    ご指摘いただいた内容などをもう一度チャレンジしてみたことで、初めてDOMAからクエリの結果が返ってくるようになりました!

    ちなみに画像の
    エラーメッセージは、
    [DOMA4019] The file "META-INF/cms/dao/UsersDao/selectAll.sql" is not found in the classpath. The absolute path is "C:\dev\Spring\cms\bin\default\META-INF\cms\dao\UsersDao\selectAll.sql".
    などと出ています。

    C:\dev\Spring\cms\bin\default 以下にMETA-INF\cms\dao\UsersDao\selectAll.sqlを作成し、その後、プロジェクトのクリーンをすると、せっかく作ったETA-INF\cms\dao\UsersDao\selectAll.sqlがなぜか削除されてしまいますが、

    何度か試してわかったことは、どうやらgradleの「Refresh Gradle Project」した後のプロジェクトのクリーンをすると削除されるようですので、とりあえずは「Refresh Gradle Project」しないで試そうと思います。

    Gradleを使ったビルドによるsqlの検索パス変更、は、まだうまくいっていませんが、
    ひとまずはありがとうございました!

Spring Bootを使っているようなのでこちらのサンプルに含まれるbuild.gradle.ktsが参考になると思います。

READMEに記載がありますがEclipseに必要なファイルを生成するために下記のコマンドを実施するのがとても重要です。

$ ./gradlew eclipse

まずは上記リポジトリをクローンして自分の環境で動くのを確認した後、ご自身のbuild.gradleもしくはbuild.gradle.ktsを修正していくのが確実なのではと思います。

1Like

Comments

  1. @mailtotakaf

    Questioner

    サンプルありがとうございます!

    spring-boot-jpetstore-masterは、以前試させていただいたことがあり、いろいろネットの情報を試した中で、唯一問題なく動くサンプルでした(笑)

    しかしながら、今回やりたいことは、Spring RESTのプロジェクトで利用したかったこともあり、逆にspring-boot-jpetstore-masterをベースにして、Spring RESTの機能を追加することは難しく思われたため、使用させていただくことを断念しておりました。。

    今回、build.gradleを改めて参考にさせていただきましたが、大変勉強になりました。
    gradleのコードはなかなか私にとって難しく、まだbuild.gradleによる設定は完全にうまくはいっていませんが、とりあえずはDOMAでのクエリ結果は返ってくるようになりました。
    ありがとうございます!



Comments

  1. @mailtotakaf

    Questioner

    このFactory Path設定にしたらとりあえずうまくいきそうです!

Your answer might help someone💌