设置初始表,进行初步登录和“记住我”。
然而,hibernate无法根据我的注释类创建表格......我无法理解为什么。以下是位于applicationContext.xml
下的/WEB-INF/
的相关摘要:
<context:annotation-config />
<context:component-scan base-package="com.mycompany" />
<tx:annotation-driven transaction-manager="transactionManager" />
<context:property-placeholder location="file:${catalina.home}/conf/database.properties" ignore-unresolvable="true"/>
<!-- Declare a datasource that has pooling capabilities-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
p:driverClass="${app.jdbc.driverClassName}"
p:jdbcUrl="${app.jdbc.url}"
p:user="${app.jdbc.username}"
p:password="${app.jdbc.password}"
p:acquireIncrement="5"
p:idleConnectionTestPeriod="60"
p:maxPoolSize="100"
p:maxStatements="50"
p:minPoolSize="10" />
<!-- Declare a transaction manager-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory" />
和hibernate.cfg.xml
位于/src/main/resources
下,并由maven复制到/WEB-INF/classe
:
<hibernate-configuration>
<session-factory>
<!-- We're using MySQL database so the dialect needs to MySQL as well-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- Enable this to see the SQL statements in the logs-->
<property name="show_sql">false</property>
<!-- <property name="hbm2ddl.auto">update</property> -->
<property name="hbm2ddl.auto">Create</property>
</session-factory>
</hibernate-configuration>
我的课程如下:
import javax.persistence.Entity;
import javax.persistence.Table;
import org.hibernate.annotations.Index;
@Entity
@Table(name = "office")
public class Office extends Base {..
我的应用程序启动正常,我甚至可以登录(因为我也有内存服务)。但是没有创建数据库表(从后端访问),并且我创建的持久登录也不起作用,因为没有创建相关表(我在尝试注销时实际上遇到错误说明错误的sql没有表persistent_login存在*)。应用启动时不会出现错误。
我错过了什么?
答案 0 :(得分:1)
您可以打开org.hibernate.tool.hbm2ddl的跟踪日志记录。这将显示DDL Hibernate在创建架构时生成的内容。
来自Hibernate来源:
String autoSchemaExport = properties.getProperty(Environment.HBM2DDL_AUTO);
if ( "validate".equals(autoSchemaExport) ) settings.setAutoValidateSchema(true);
if ( "update".equals(autoSchemaExport) ) settings.setAutoUpdateSchema(true);
if ( "create".equals(autoSchemaExport) ) settings.setAutoCreateSchema(true);
if ( "create-drop".equals(autoSchemaExport) ) {
settings.setAutoCreateSchema(true);
settings.setAutoDropSchema(true);
}
看起来你需要创建一个小c(正如@aishwaryaless所指出的)