MainTable.java extends Common.java private Long id ; private Long version ; private String name ; private SubTable sub ; SubTable.java extends Common.java private String subname ; prviate String dualname ; Common.java private Long id ; prviate Date createDate ; HQL v String sql = "update MainTable set name = ? where sub.id = ? and version = ?" ; Query query = session..createQuery(sql); // set paramerts query.executeUpdate();
hibernate 生成的 SQL
更新 MainTable set name =? templateve0_.SUB_ID= 在哪里?和版本 =?
错误
错误 org.hibernate.util.JDBCExceptionReporter - ORA-00904:“TEMPLATEVE0_”。“SUB_ID”:标识符无效
仅供引用 - SUB_ID 是有效的列名。
我不确定为什么 hibernate 只为子对象添加 templateve0_ 别名。有帮助吗?
最佳答案
原创 - String sql = "update MainTable set name = ? where sub.id = ? and version = ?";
已更新 String sql = "update MainTable set name = ? where SUB_ID = ? and version = ?";
我用实际的列名替换了 sub.id,它似乎工作正常!很奇怪!
关于java - Hibernate HQL 别名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112237/