未创建布尔字段的实体的表

时间:2014-01-26 11:25:03

标签: jpa derby glassfish-4

我试图将GlassFish 4中的连接池从MySQL切换到Derby。我正在使用Spring-Data-JPA和JPA / Hibernate。问题是并非所有表都是使用derby池创建的。不创建具有至少一个布尔字段的实体的表。

我在日志文件中找不到任何内容。 :(

我的applicationContext.xml:

<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <context:annotation-config />

    <context:component-scan base-package="project" />

    <bean
        id="dataSource"
        class="org.springframework.jndi.JndiObjectFactoryBean">
        <property
            name="jndiName"
            value="serverPool" />
        <property
            name="lookupOnStartup"
            value="false" />
        <property
            name="proxyInterface"
            value="javax.sql.DataSource" />
    </bean>

    <bean
        id="hibernateJpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property
            name="generateDdl"
            value="true" />
        <property
            name="showSql"
            value="true" />
    </bean>

    <bean
        id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property
            name="dataSource"
            ref="dataSource" />
        <property
            name="jpaVendorAdapter"
            ref="hibernateJpaVendorAdapter" />
        <property
            name="packagesToScan"
            value="project.model.entity" />
    </bean>

    <bean
        id="transactionManager"
        class="org.springframework.orm.jpa.JpaTransactionManager">
        <property
            name="entityManagerFactory"
            ref="entityManagerFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />

    <jpa:repositories base-package="project.model.repository" />
</beans>

2 个答案:

答案 0 :(得分:0)

如果问题只是创建布尔列,请尝试使用@Column将DDL语句添加到Derby数据库,我知道这种降低可移植性但它将解决问题。该属性名为columnDefinition。 http://docs.oracle.com/javaee/6/api/javax/persistence/Column.html

此外,我认为日志中需要有一些东西,尝试提高日志级别。

答案 1 :(得分:0)

好的,我找到了解决方案:我连接到derby数据库并执行命令values syscs_util.syscs_get_database_property( 'DataDictionaryVersion' );结果是10.1,但版本10.7是布尔支持所必需的。然后,我在GlassFish内的derby池中重命名了数据库名称(默认为sun-appserv-samples),现在创建了所有表。使用新数据库,命令给了我版本10.9。