java - Hibernate HQL 别名问题

标签 java sql oracle hibernate

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/

相关文章:

java - 处理桌面应用程序的特定 Java 版本

java - 使用 string.split() 时的前导空格

SQL 查询报告下一个日志条目之前的持续时间

mysql - 从三张表中提取数据,一张表作为中间

java - SQL 查询查找与 Toplink 中的日期相等的行

java - 我从 UI 中的日历获取日期,格式为 dd/mm/yyyy。但我想要 18 年 7 月 12 日的格式

oracle - 如何声明弱类型 SYS_REFCURSOR 变量的 %ROWTYPE?

java - SQL 中的名称按字母顺序排列

sql - 如果子集组合返回空结果,查询获取超集?

java - 根据这段代码,如果返回的 Future<V> 被限制在实例中,FutureTask 如何被取消?