1

我在 db(postgresql) 中有一些名称像这样"Test"的表。当我尝试使用休眠从这些表创建 java 类时,它没有发生。我从具有这样名称的表中获取类test。如何使休眠可以看到名称中带有引号的表?

更新

也许我写的问题不正确。但是我不能创建 java 类,我想知道如何对在 qoutes 中有名称的表进行反向生成。我无法从表名和列名中删除 qoutes,因为它们的名称类似于 Type 和 Full。

4

5 回答 5

0

默认情况下,Hibernate 假定数据库表名与类名相同,但您可以通过@Table注解覆盖此行为:

@Entity
@Table(name="\"Test\"") // Will use "Test" (including the quotes) as the table name
public class Test {
于 2012-08-16T04:15:34.260 回答
0

@Table 注解用于指定要持久化数据的表。name 属性是指表名。如果没有指定@Table 注解,那么 Hibernate 默认使用类名作为表名。所以你的数据库的表名是“Test”,那么你应该使用你的类名是“Test”。

于 2012-08-16T04:47:08.857 回答
0

select * from """Test"""如果您的表名是“Test” ,请检查您的数据库 。

您的实体类应该是

@Entity
@Table(name = "\"\"\"Test\"\"\"")
public class Test {
}
于 2012-08-16T04:52:34.173 回答
0

看来你现在没有使用注释......

因此,如果您想"Test"用作表名,您应该通过 Bohemian 定义的注释定义 POJO 与您的表的映射

@Entity
@Table(name="\"Test\"")
public class Test {

Test.hbm.xml在其中定义您必须将表和字段映射到 java 类和列。

于 2012-08-16T04:53:08.767 回答
0

或者,您可以在 @Table 注释中指定架构和数据库名称。

@Entity
@Table(name = "Test", schema = "public", catalog = "TestDatabase")

Hibernate 将识别表而不需要转义双引号。

于 2020-12-20T23:11:05.033 回答