我在Java项目中使用hibernate映射,我有一个我无法想象的错误。我有几个表包括所有小写的列名(例如db_id)。要在Java中使用它们,在我的.hbm.xml文件中,我使用以下行映射它们:
<id name="dbId" type="long" column="DB_ID">
直到现在我还没有任何错误。即使我使用上面的大写(column =“DB_ID”),映射也是成功的。但是,当我尝试运行项目时,我现在得到了一个缺少的列错误。错误行如下:
org.hibernate.HibernateException: Missing column: DB_ID in public.x.account
at org.hibernate.mapping.Table.validateColumns(Table.java:277)
当我在pgAdmin或Navicat(我正在使用PostgreSQL)中手动将列名从db_id更改为DB_ID时,此错误消失,下一列名称出错。我有几十个表和数百个列名。我还有许多用于映射的.hbm.xml文件。 (这是一个大项目的一部分。)所以我不想手动更改所有列名或更改.hbm.xml文件中的所有列属性。
如何使hibernate映射不区分大小写?即使我在.hbm.xml文件中使用column =“DB_ID”,我也希望在映射中识别我的db_id列。
答案 0 :(得分:0)
问题解决了。
我想这个问题源于操作系统或java的语言没有用英语设置的事实。所以我在apache-tomcat / bin目录中创建了一个setenv.bat文件并用以下语句填充它
set JAVA_OPTS=%JAVA_OPTS% -Duser.language=en -Duser.region=US
用这种方式解决了。我希望这对遇到同样问题的人有所帮助。