Hibernate:在非默认架构中创建SQL Server 2012数据库表

时间:2018-06-11 03:32:39

标签: java hibernate sql-server-2012

我尝试使用Hibernate在SQL Server 2012数据库中创建表。

我在Java项目的persistence.xml文件中设置了许多属性:

<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect" />
<property name="hibernate.hbm2ddl.auto" value="auto" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.use_sql_comments" value="false" />

...并在UI创建数据源时设置数据库连接详细信息,这在配置Java类中完成:

dataSource.setDriverClassName(myDriver); // com.microsoft.sqlserver.jdbc.SQLServerDriver
dataSource.setUrl(myUrl); // jdbc:sqlserver://host:port;DatabaseName=dbname
dataSource.setUsername(myUser);
dataSource.setPassword(myPwd);

在Java类中,我还在创建Java Persistence实体管理器工厂时设置了默认模式:

final Map<String, Object> jpaProperties = new HashMap<>();
jpaProperties.put("hibernate.default_schema", "mySchema");
entityManagerFactory.setJpaPropertyMap(jpaProperties);
entityManagerFactory.afterPropertiesSet();
return entityManagerFactory.getObject();

Java域类的注释如下:

@Entity
@Table(name = "mytable")
public class MyTable {
...
}

架构名为&#34; mySchema&#34;已在SQL Server数据库中创建,并且已授予数据源中指定的用户授权。

当我尝试运行应该在第一次运行时创建表的功能(并正确填充它)时,我收到以下错误消息:

SQLServerException: Invalid object name 'mySchema.mytable'

...并且尚未在架构中创建表。

Hibernate SQL看起来像这样:

select  alias0_.ID as alias1_0_0_
... other columns...
from    mySchema.mytable alias0_
where   alias0_.ID=?

我在我的Java项目中使用了hibernate-jpa-2.1-api JAR的版本1.0.0.Final。

提前感谢您的任何帮助。

0 个答案:

没有答案