3

我想用休眠在 MS SQL 中创建一个对象,这个表的名称是“用户”。这没用!。我认为这个问题可能是由表/实体的名称引起的,用户是关键字。我应该怎么做才能拥有名为“user”的表?

@Entity
@Table(name = "user")
public class User  {
4

2 回答 2

5

用方括号将表名括起来:

@Entity
@Table(name = "[user]")
public class User  {

这样 Hibernate 在创建表时会对其进行转义。如果按照规则将所有字段和表名放在方括号中,则在设置映射时不必考虑底层 DBMS。

<rant>你必须这样做总是困扰着我。Hibernate 的主要目标之一是将您的代码与底层数据库隔离 - 我不明白为什么方言实现不能正确处理转义保留关键字。</rant>

另请参阅:在 Hibernate 中使用数据库保留关键字

于 2013-08-13T13:40:25.600 回答
1

我应该使用重音(`)。为了在休眠中使用关键字,我们必须在关键字周围使用(`)。

@Entity
@Table(name = "`user`")
public class CompanyUser extends
于 2013-08-14T09:00:10.713 回答