首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSQLDB:遇到重复的sql别名

HSQLDB:遇到重复的sql别名
EN

Stack Overflow用户
提问于 2016-10-20 23:24:02
回答 1查看 4.5K关注 0票数 1

当我从java程序中使用自连接执行这个查询时

代码语言:javascript
复制
Query query = session.createSQLQuery("SELECT DISTINCT * " +
            "FROM lerneinheit AS le1 JOIN lerneinheit AS le2  " +
            "ON le1.datum = le2.datum AND le1.pid = le2.pid " +
            " WHERE " +
            "  le1.datum BETWEEN  '2016-10-20' AND '2016-10-20'  AND " +
            "  le1.pid = 3 AND " +
            "  (le1.abgesagtrechtzeitig = false OR  le1.nichtabgesagt = true OR le1.erschienen=true) AND " +
            "  (le2.abgesagtrechtzeitig = false OR  le2.nichtabgesagt = true OR le2.erschienen=true) AND " +
            "  le1.lernid!= le2.lernid AND " +
            "  (le2.beginn+1 BETWEEN le1.beginn AND le1.ende OR le2.ende-1 BETWEEN le1.beginn AND le1.ende) " +
            " ORDER BY le1.beginn");

我得到以下错误:

代码语言:javascript
复制
org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [LERNID] during auto-discovery of a native-sql query

不过,如果我在phpAdmin中执行此操作,则可以很好地工作。我在这个话题上找到的所有东西都没有任何帮助。有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-20 23:28:46

我不确定,但是!=的HQL等价物是<>,所以你应该写" le1.lernid <> le2.lernid AND"

顺便说一句,我建议:

代码语言:javascript
复制
Query query = session.createSQLQuery("SELECT DISTINCT * " +
        "FROM lerneinheit AS le1 JOIN lerneinheit AS le2  " +
        "ON le1.datum = le2.datum AND le1.pid = le2.pid " +
        " WHERE " +
        "  le1.datum BETWEEN  :dateMin AND :dateMax  AND " +
        "  le1.pid = :le1Pid AND " +
        "  (le1.abgesagtrechtzeitig = false OR  le1.nichtabgesagt = true OR le1.erschienen=true) AND " +
        "  (le2.abgesagtrechtzeitig = false OR  le2.nichtabgesagt = true OR le2.erschienen=true) AND " +
        "  le1.lernid!= le2.lernid AND " +
        "  (le2.beginn+1 BETWEEN le1.beginn AND le1.ende OR le2.ende-1 BETWEEN le1.beginn AND le1.ende) " +
        " ORDER BY le1.beginn");
query.setParametter("dateMin", "2016-10-20"); 
query.setParametter("dateMax", "2016-10-20"); 
query.setParametter("le1Pid", 3); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40158548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档