Hibernate没有看到名称中带引号的表

时间:2012-08-16 04:11:12

标签: java hibernate postgresql

我在db(postgresql)中有一些表,其名称类似于"Test"。当我尝试使用hibernate从这些表创建java类时,它不会发生。我从名为test的表中获取类。如何使hibernate可以在名称中看到带引号的表?

更新

也许我写的问题不正确。但我不能创建java类,我想知道如何使用qoutes中的名称进行反向入侵。我无法从表名和列名中删除qoutes,因为它们的名称类型为Type和Full。

5 个答案:

答案 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 无需转义双引号即可识别表。