Spring Roo + GWT - проблема постоянства с базой данных HSQLDB - PullRequest
0 голосов
/ 12 апреля 2011

Я использую 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"/> после создания.

Ответы [ 2 ]

3 голосов
/ 13 мая 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

1 голос
/ 14 апреля 2011

На вашем месте я бы использовал другую базу данных.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 / resources / META-INF / persistence.xml .Надеюсь, это поможет ..

...