Таблица не найдена исключение с использованием javalite - PullRequest
0 голосов
/ 03 мая 2020

Итак, у меня есть очень простая таблица, которую я сделал в SQL, используя h2

CREATE TABLE USERS(
    username varchar(255) NOT NULL,
    password varchar(255),

); 

Я пытаюсь использовать javalite, чтобы добавить в нее запись, поэтому я сделал это, следуя инструкциям на сайте .

package DBTEST;

import org.javalite.activejdbc.Base;

public class makeDB {
    public static void main(String[] args) {
        Base.open("org.h2.Driver", "jdbc:h2:./test", "sa", "");

        User e = new User();
        e.set("username", "John");
        e.set("password", "Doe");
        e.saveIt();


        User.findAll().dump();
        Base.close();
    }
}

У меня есть класс Пользователи для этой таблицы

package DBTEST;

import org.javalite.activejdbc.Model;
import org.javalite.activejdbc.annotations.Table;

@Table("USERS")
public class User extends Model {
}

Я получаю это исключение

Exception in thread "main" org.javalite.activejdbc.DBException: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USERS" not found; SQL statement:

Может кто-нибудь помочь? Я понятия не имею, почему это происходит

1 Ответ

0 голосов
/ 04 мая 2020
  • Во-первых, у вашего SQL есть лишняя запятая в выражении "CREATE USERS". В сообщении об ошибке говорится: «способные» ПОЛЬЗОВАТЕЛИ «не найдены» - это означает, что у вас просто нет таблицы!

  • Во-вторых, в определении таблицы отсутствует id, см. https://javalite.io/surrogate_primary_keys

  • В-третьих, я создал простой пример проекта и добавил туда свой код. Это работает, как ожидалось. Проект можно найти здесь: https://github.com/javalite/h2-example

Результат запуска этой программы выглядит следующим образом:

Model: activejdbc.examples.simple.User, table: 'users', attributes: {ID=1, PASSWORD=Doe, USERNAME=John}

, что точно как и ожидалось.

Кроме того, аннотация @Table не требуется: https://javalite.io/english_inflections

...