我尝试使用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。
提前感谢您的任何帮助。