Spring Roo + GWT - проблема сохранения с базой данных HSQLDB

Я использую Spring Roo для разработки проекта в GWT. После нескольких попыток не удается сохранить объекты в базе данных. Каждый раз, когда я перезапускаю или перезагружаю данные из таблиц, значения исчезают. Это мой файл log.roo

// Spring Roo 1.1.2.RELEASE [rev fbc33bb] log opened at 2011-04-12 14:38:57
project --topLevelPackage com.despesas
persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
enum type --class ~.shared.domain.Genero
enum constant --name HOMEM
enum constant --name MULHER
entity --class ~.server.domain.Funcionario --testAutomatically
field string --fieldName Nome --notNull
field string --fieldName userName --sizeMin 3 --sizeMax 30 --notNull
field string --fieldName departmento
field reference --type Funcionario supervisor
field enum --fieldName sexo --type ~.shared.domain.Genero
field boolean --fieldName admin --notNull
entity --class ~.server.domain.Report --testAutomatically
field string --fieldName proposta
field string --fieldName notas
field date --fieldName criado --type java.util.Date
field string --fieldName departamento
field reference --type Funcionario reporter
field reference --type Funcionario AprovacaoSupervisor
entity --class ~.server.domain.Despesa --testAutomatically
field number --type java.lang.Double montante
field string --fieldName descricao
field reference --type Report report
field string --fieldName aprovacao
field string --fieldName categoria
field date --fieldName criado --type java.util.Date
field string --fieldName motivoRecusa
gwt setup
logging setup --level INFO
quit
dependency add --groupId com.google.appengine --artifactId appengine-api-1.0-sdk --version 1.4.0
quit
perform eclipse
quit

Буду ли я делать неправильную конфигурацию в файле persistence.xml или базу данных HSQLDB не рекомендуется хранить и поддерживать постоянство.

Это мой файл persistence.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/>
            <!-- Uncomment the following two properties for JBoss only -->
            <!-- property name="hibernate.validator.apply_to_ddl" value="false" /-->
            <!-- property name="hibernate.validator.autoregister_listeners" value="false" /-->
        </properties>
    </persistence-unit>
</persistence>

Я изменил <property name="hibernate.hbm2ddl.auto" value="create"/> на <property name="hibernate.hbm2ddl.auto" value="update"/> после создания.


person Ana Ferreira    schedule 12.04.2011    source источник


Ответы (2)


На вашем месте я бы использовал другую базу данных. HSQLDB не хранит данные на диске, а только в памяти. Я использую MYSQL, и я счастлив. Я прикреплю пример, чтобы вы увидели, как я устанавливаю файл журнала.

project --topLevelPackage com.something
persistence setup --provider HIBERNATE --database MYSQL --databaseName myDb --userName root --password admin

и т. д. Затем импортируйте в eclipse в оболочке roo с помощью perform eclipse и отредактируйте параметры в src/main/resources/META-INF/spring/database.properties и src/main/ ресурсы/META-INF/persistence.xml. Надеюсь, поможет..

person Martinho    schedule 14.04.2011
comment
Большое спасибо. Это мне очень помогло. Не очень хорошо понимал HSQLDB и видел много примеров, которые я думал о другом. - person Ana Ferreira; 14.04.2011

Поддерживается постоянная HSQLDB. Если вы посмотрите на эту страницу:

http://static.springsource.org/spring-roo/reference/html/base-persistence.html

Этот пример дан для базы данных в памяти:

A database properties file (src/main/resources/META-INF/spring/database.properties) which contains user name, password, JDBC driver name and connection URL details:

database.url=jdbc\:hsqldb\:mem\:foo
database.username=sa
database.password=
database.driverClassName=org.hsqldb.jdbcDriver

Вы должны изменить его на:

database.url=jdbc\:hsqldb\:file\:foo

База данных теперь представляет собой файловую базу данных с набором файлов: foo.properties, foo.log и т. д.

Вы можете добавить свойства к URL-адресу, как описано в руководстве по HSQLDB, чтобы управлять различными параметрами сохраняемости.

В качестве альтернативы запустите сервер HSQLDB и используйте \:hsql вместо \:file.

person fredt    schedule 13.05.2011