Java 如何告诉Hibernate annotation@Column区分大小写?

Java 如何告诉Hibernate annotation@Column区分大小写?,java,hibernate,jpa,annotations,sybase,Java,Hibernate,Jpa,Annotations,Sybase,我试图在一个名为ECM的表中使用Hibernate在Sybase db上执行一个简单的SELECT查询。我用以下方式注释了我的DBO: @Entity @Table(name="ECM") public class RelationshipDbo { ... } 但是,我面临一个“TableNotFound”错误:生成的SQL表名是小写的。我无法更改数据库配置,使其不区分大小写 我也尝试过这样引用: @Table(name="`ECM`") 这是: @Table(name="'ECM

我试图在一个名为ECM的表中使用Hibernate在Sybase db上执行一个简单的SELECT查询。我用以下方式注释了我的DBO:

@Entity
@Table(name="ECM")
public class RelationshipDbo {
    ...
}
但是,我面临一个“TableNotFound”错误:生成的SQL表名是小写的。我无法更改数据库配置,使其不区分大小写

我也尝试过这样引用:

@Table(name="`ECM`")
这是:

@Table(name="'ECM'")
结果:在查询中添加了引号,但表名仍然从大写转换为小写

技术资料:

Hibernate 4.3
JPA 1.2
org.hibernate.dialect.SybaseDialect
你们知道吗

编辑:也尝试了此操作

然后,我的列名和表名会被自动引用,但名称仍然是小写的。

请尝试以下操作:

@Table(name=“`ECM`”)中所示使用反勾号


这必须从休眠点开始工作。若并没有,那个么问题应该在DB中(若我并没有错的话)

你们的Sybase DB版本是什么?
Sybase方言
在Hibernate 3.5中被弃用,然后从Hibernate 4.1开始重构,使用一系列子类匹配不同版本的Sybase。您是否尝试过其中一个子类,看看它是否有什么不同

  • org.hibernate.dialogue.sybase11方言
  • org.hibernate.dialogue.sybaseanywhere方言
  • org.hibernate.dialogue.sybasease15dialogue

    • 我想我有你的答案:

      基本上,您需要更改JPA提供者的命名策略。如何做到这一点将取决于您如何设置项目

      在我的例子中,我使用spring引导数据将application.properties中的一个属性设置为

      spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
      

      如果没有您提供更多的详细信息,我就无法给出更多的细节。我的目标有点不同,因为我尝试用大写创建表,hibernate用小写创建表。而且我使用的是MySQL而不是Sybase。 但对我来说,引用这样的名字是有效的:

      @Entity
      @Table(name="\"ECM\"")
      public class RelationshipDbo {
          ...
      }
      

      然后用大写字母创建表。也许这对查询也有帮助。

      已经测试过了,但没有成功,正如我在帖子中所说的。问题是,即使被引用,ECM字母也会因为某些原因而被小写。谢谢,尝试了三种可能的方言,但生成的SQL保持不变:总是我的表名小写..奇怪。我运行了一个快速测试,在现有项目中切换到Sybase方言(在mem db中使用H2),我的SQL输出中的情况是正确的。。我在配置中看到的主要区别是我使用的是JPA2.1。我不确定这是否有什么不同。嗨@Deathtiny,你能找到这个问题的解决方案吗,我也面临着同样的问题。看起来很难看,但实际上很有效。不过,最好的选择是改变Hibernate的命名策略,@see