我在从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值,我认为可能是问题,但我不确定。任何其他建议将不胜感激。