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