ActiveJDB C не удалось определить имя класса модели во время findFirst, но не при вставке - PullRequest
0 голосов
/ 03 апреля 2020

Во время отладки в eclipse ниже весенней загрузки приложение работает нормально, вставляя запись в таблицу, но не выполняет findFirst, давая мне: failed to determine Model class name, are you sure models have been instrumented?

Gradle:

plugins {
    (...)
    id 'java'
    id "de.schablinski.activejdbc-gradle-plugin" version "1.2" apply false 
}

(...)

dependencies {

    implementation group: 'org.javalite', name: 'activejdbc', version: '1.4.11'
    implementation group: 'org.javalite', name: 'activejdbc-instrumentation', version: '1.4.11' 

    (...)
}

/** Task: Instrument ActiveJdbc models **/
    task activeJdbcInstrumentation() {
    apply plugin: 'de.schablinski.activejdbc-gradle-plugin'
}

build.dependsOn(activeJdbcInstrumentation) 

Java

Base.open(dataSource);

try {
    TestConJavaLite model = new TestConJavaLite();          
    model.setString("ID", UUID.randomUUID());
    model.setString("Column1", UUID.randomUUID());
    model.setString("Column2", UUID.randomUUID());
    model.setString("Column3", UUID.randomUUID());
    model.setString("Column4", UUID.randomUUID());
    model.setString("Column5", UUID.randomUUID());
    model.setString("Column5", UUID.randomUUID());
    model.setString("Column6", UUID.randomUUID());
    model.setString("Column7", UUID.randomUUID());
    model.setString("Column8", UUID.randomUUID());
    model.setString("Column9", UUID.randomUUID());
    model.insert(); // --> Works fine

    model = model.findFirst("ID = 1"); // --> Gives error
} catch (Exception e) {
    System.out.println(e.getMessage());
}       

if(Base.hasConnection()) {
    Base.close();
}

Чего я не понимаю, так это почему выдает эту ошибку только для findFirst, а не для insert. Есть идеи?

1 Ответ

1 голос
/ 03 апреля 2020

Способ работы Инструментовки описан здесь: https://javalite.io/instrumentation

По сути, инструментарий копирует байт-код stati c методов из класса Model в твой класс. Методы экземпляра не затрагиваются. Метод findFirst() - это stati c, и если вы хотите его использовать, вам нужны инструменты. insert() является методом экземпляра и, следовательно, не требует инструментов.

...