我们有一个使用石英的grails应用程序,我们使用hibernate.cfg.xml创建石英表,并且它可以正常工作。我们已经更新了grails的版本,并且不再创建表。
为缩小问题的范围,从头开始创建了grails项目。我添加的唯一内容是hibernate.cfg.xml和quartz.sqlserver.hbm.xml。此外,已将db属性添加到application.yml
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping resource="quartz.sqlserver.hbm.xml"/>
</session-factory>
</hibernate-configuration>
quartz.sqlserver.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<database-object>
<create>
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PINS_SCHEDULER_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
BEGIN
CREATE TABLE [dbo].[PINS_SCHEDULER_CALENDARS] (
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
[CALENDAR_NAME] [VARCHAR] (200) NOT NULL ,
[CALENDAR] [IMAGE] NOT NULL
) ON [PRIMARY];
ALTER TABLE [dbo].[PINS_SCHEDULER_CALENDARS] WITH NOCHECK ADD
CONSTRAINT [PK_PINS_SCHEDULER_CALENDARS] PRIMARY KEY CLUSTERED
(
[SCHED_NAME],
[CALENDAR_NAME]
) ON [PRIMARY];
END
</create>
<drop>
<!--IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PINS_SCHEDULER_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)-->
<!--BEGIN-->
<!--DROP TABLE [dbo].[PINS_SCHEDULER_CALENDARS];-->
<!--END-->
SELECT 1
</drop>
<dialect-scope name="org.hibernate.dialect.SQLServer2012Dialect" />
</database-object>
</hibernate-mapping>
application.yml的相关部分
environments:
development:
dataSource:
dbCreate: update
dialect: org.hibernate.dialect.SQLServer2012Dialect
driverClassName:
com.microsoft.sqlserver.jdbc.SQLServerDriver
url: 'jdbc:sqlserver://localhost;characterEncoding=utf-8;databaseName=*****'
username: ****
password: ****
与数据库的连接很好,但是不再创建表。
Grails版本:3.3.8 | Groovy版本:2.4.15 | JVM版本:1.8.0_191
问题是不再创建quartz.sqlserver.hbm.xml中指定的表。
任何想法都将不胜感激。