如何在重写属性的Hibernate 5中设置序列生成器?

时间:2016-11-24 18:08:25

标签: hibernate spring-data-jpa

我在从Hibernate 4迁移到5的人中遇到了一个相当普遍的问题,但到目前为止,没有一个建议的解决方案对我有用,我认为这可能是因为我使用了覆盖的“id”属性。我得到的例外情况如下:

  com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table'test.hibernate_sequence' doesn't exist

我在spring-persistence.xml中设置了Hibernate属性,如下所示:

   <bean id="globalSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <property name="dataSource" ref="globalDataSource"/>
            <property name="packagesToScan">
                <list>
                    <value>com.v.portal.server.domain</value>
                </list>
            </property>
            <property name="hibernateProperties">
                <map>
                    <entry key="hibernate.dialect" value="${jdbc.dialect}"/>
                    <entry key="hibernate.show_sql" value="${jdbc.showSql}"/>
                    <entry key="hibernate.jdbc.batch_size" value="1"/>
                    <entry key="hibernate.order_inserts" value="true"/>
                    <entry key="hibernate.order_updates" value="true"/>
                    <entry key="hibernate.id.new_generator_mappings" value="false"/>
                    <entry key="hibernate.hbm2ddl" value="create-update"/>
                    <entry key="hibernate.hbm2ddl.auto" value="create"/>
                    <entry key="hibernate.cache.use_second_level_cache" value="true"/>
                    <entry key="hibernate.cache.use_query_cache" value="true"/>
                    <entry key="hibernate.cache.region.factory_class"
        value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"/>
                    <entry key="net.sf.ehcache.configurationResourceName" value="/ehcache.xml"/>
                </map>
            </property>
        </bean>

这是我的实体课程:

import javax.persistence.*;
import org.springframework.data.jpa.domain.AbstractPersistable;

@Entity
@Table(name = "security_actor")
@Inheritance(strategy = InheritanceType.JOINED)
@AttributeOverride(name = "id", column = @Column(name = "security_actor_id"))
public abstract class SecurityActor extends AbstractPersistable<Long> {

    @ManyToOne
    @JoinColumn(name = "organization_id", referencedColumnName = "organization_id", nullable = false)
    private ShardedOrganization organization;

    public SecurityActor() {
        super();
    }

    public ShardedOrganization getOrganization() {
        return organization;
    }

    public void setOrganization(ShardedOrganization organization) {
        this.organization = organization;
    }
}

我的pom.xml:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.0.9.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.2.4.Final</version>
    </dependency>

    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>com.googlecode.log4jdbc</groupId>
        <artifactId>log4jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.sshd</groupId>
        <artifactId>sshd-core</artifactId>
    </dependency>

    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcmail-jdk15on</artifactId>
    </dependency>

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
    </dependency>

由于“security_actor_id”属性覆盖了spring-data-jpa 1.10.3中的AbstractPersistable中的“id”属性,这是@Generated值,我认为可能是问题,但我不确定。任何其他建议将不胜感激。

0 个答案:

没有答案