Hibernate / HSQLDB в памяти: java.sql.SQLSyntaxErrorException: пользователю не хватает привилегий или объект не найден - PullRequest
0 голосов
/ 28 декабря 2018

Я создаю простое приложение crud с hibernate / в памяти hsqldb, без пружины.

Я думал, что это может быть несовместимость версий, но обновление не помогло.Я попытался изменить hbm2ddl.auto на «update», но это также не помогло.

Исключение:

java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: ACCOUNT

Sql:

insert into Account (id, balance, creationDate, currency, isActive, lastModificationDate, username) values (default, ?, ?, ?, ?, ?, ?)

Сообщение:

could not prepare statement

Объект:

@Entity
@Getter
@Setter
public class Account {

    @Id
    @GeneratedValue
    private String id;

    @Column(length = 16)
    private String username;
    @Column(precision = 2)
    private BigDecimal balance;
    private Currency currency;
    private boolean isActive;
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;
    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModificationDate;
}

Метод:

@Override
public String save(Account account) {
    Session session = SessionUtil.getSesssionFactory().openSession();
    Transaction transaction = null;
    String id = null;
    try {
        transaction = session.beginTransaction();
        id = String.valueOf(session.save(account));
        transaction.commit();
    }
    catch (HibernateException e){
        transaction.rollback();
    }
    finally {
        session.close();
    }
    return id;
}

Конфиг:

public static SessionFactory getSesssionFactory(){
    Configuration cfg = new Configuration()
            .addAnnotatedClass(Transfer.class)
            .addAnnotatedClass(Account.class)
            .setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect")
            .setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:mydb")
            .setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver")
            .setProperty("hibernate.connection.username", "sa")
            .setProperty("hibernate.connection.password", "")
            .setProperty("hibernate.hbm2ddl.auto", "create-drop");
    SessionFactory sessionFactory = cfg.buildSessionFactory();
    return sessionFactory;
}

pom.xml:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.2.9</version>
    </dependency>
...