【问题标题】:Hibernate 5 still ignores @Table annotation to find tablesHibernate 5 仍然忽略 @Table 注释来查找表
【发布时间】:2016-12-21 16:21:02
【问题描述】:

Hibernate 是否仍然忽略 @Table 名称注释?我所有的表都以 CamelCase 策略命名。有什么方法可以使用注释还是我必须编写自己的命名策略?

【问题讨论】:

  • 找不到它们是什么意思?您是否使用对表名区分大小写的数据库?就是这样使用@Table('\"MyTableName\"")
  • 我使用 PostgreSQL 作为数据库。
  • 我认为 Spring 设置了一些“命名策略”,基本上违反了 JPA 规范为表和列命名定义的内容。如果你在这个网站上搜索,你会找到其他人。使用其他 JPA 提供程序可以避免这个问题,或者为 Hibernate 手动设置这个属性

标签: java spring hibernate jpa


【解决方案1】:

根据 JSR 338,JPA 2.1

要指定分隔标识符,必须使用以下方法之一:

• 可以通过指定对象/关系xml 映射文件的persistence-unit-defaults 元素中的元素来指定将用于持久性单元的所有数据库标识符视为定界标识符。如果指定了<delimited-identifiers/> 元素,则不能被覆盖。

• 可以基于每个名称指定将数据库对象的名称解释为分隔标识符,如下所示: • 使用注释,通过将名称括在双引号中,将名称指定为分隔标识符,从而转义内引号,例如,@Table(name="\"customer\""). • 使用 XML 时,使用双引号将名称指定为分隔标识符,例如,<table name=""customer""/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2020-10-26
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多