【问题标题】:session.createCriteria(type) is querying table name in lowercasesession.createCriteria(type) 正在查询小写的表名
【发布时间】:2014-11-23 08:35:32
【问题描述】:

Hibernate 会话正在生成带有小写表名的查询,例如:

type = Employee.class 但表是 EMPLOYEE

但查询是 * 来自 Emloyee where *

因为这个SQL异常表不存在!!

result = session.createCriteria(type).add(Restrictions.eq("Id", Id)).list();

提前致谢!!

【问题讨论】:

  • 你有告诉 Hibernate 表名是什么吗?这个名字怎么区分大小写?为什么要这样做?
  • 是的,我已经这样做了....... final Class type = abc.xyz.Employee.class;
  • 这并不能回答我的任何问题。 Hibernate怎么知道表名是EMPLOYEE?为什么名称区分大小写?
  • 通过我的 POJO 不是吗?我是新来的冬眠。你能让我明白告诉休眠需要什么。
  • POJO的代码是?该代码中是否有任何内容告诉 Hibernate “嘿,我的班级是 Employee,但对应的表名是 EMPLOYEE,而不是 Employee”?

标签: mysql hibernate session


【解决方案1】:

SQL is case insensitive 所以这两个选择是等价的:

select * from Emloyee where id = 1
SELECT * FROM EMLOYEE WHERE ID = 1

确保当您的表位于 Hibernate 不知道的不同架构中时,Hibernate 不会尝试针对 PUBLIC 架构进行选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多