我在 db(postgresql) 中有一些名称像这样"Test"
的表。当我尝试使用休眠从这些表创建 java 类时,它没有发生。我从具有这样名称的表中获取类test
。如何使休眠可以看到名称中带有引号的表?
更新
也许我写的问题不正确。但是我不能创建 java 类,我想知道如何对在 qoutes 中有名称的表进行反向生成。我无法从表名和列名中删除 qoutes,因为它们的名称类似于 Type 和 Full。
我在 db(postgresql) 中有一些名称像这样"Test"
的表。当我尝试使用休眠从这些表创建 java 类时,它没有发生。我从具有这样名称的表中获取类test
。如何使休眠可以看到名称中带有引号的表?
更新
也许我写的问题不正确。但是我不能创建 java 类,我想知道如何对在 qoutes 中有名称的表进行反向生成。我无法从表名和列名中删除 qoutes,因为它们的名称类似于 Type 和 Full。
默认情况下,Hibernate 假定数据库表名与类名相同,但您可以通过@Table
注解覆盖此行为:
@Entity
@Table(name="\"Test\"") // Will use "Test" (including the quotes) as the table name
public class Test {
@Table 注解用于指定要持久化数据的表。name 属性是指表名。如果没有指定@Table 注解,那么 Hibernate 默认使用类名作为表名。所以你的数据库的表名是“Test”,那么你应该使用你的类名是“Test”。
select * from """Test"""
如果您的表名是“Test” ,请检查您的数据库
。
您的实体类应该是
@Entity
@Table(name = "\"\"\"Test\"\"\"")
public class Test {
}
看来你现在没有使用注释......
因此,如果您想"Test"
用作表名,您应该通过 Bohemian 定义的注释定义 POJO 与您的表的映射
@Entity
@Table(name="\"Test\"")
public class Test {
或Test.hbm.xml
在其中定义您必须将表和字段映射到 java 类和列。
或者,您可以在 @Table 注释中指定架构和数据库名称。
@Entity
@Table(name = "Test", schema = "public", catalog = "TestDatabase")
Hibernate 将识别表而不需要转义双引号。