我有一个名为ETL_TABLES的表,它驻留在公共模式上。在 我的application.conf我有以下几行:
hibernate.default_schema=public
这应该意味着postgres的search_path被设置为公共模式。
我有一个Tables
课,有@Table(name="ETL_TABLES")
注释。
但是当我尝试访问实体类时,例如通过
Tables.findAll();
然后错误说关系“public.etl_tables”
不存在。
该表存在于postgres公共架构中,所以我在做什么 这里错了吗?
答案 0 :(得分:1)
确保您已设置postgresql dialect:
jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
答案 1 :(得分:0)
显然在你的配置中我需要在创建实体时写这个:
@Table(name="\"ETL_TABLES\"")
所以我必须用\“来表示select中所需的双引号。
答案 2 :(得分:0)
我遇到了这个问题,事实证明hibernate默认情况下不喜欢实体中的映射表名(我确信有一些配置可以覆盖它!)。所以它找不到关系'Article'但会找到'article'或'ARTICLE'。希望这能帮助那些来到这个主题的人