【问题标题】:Hibernate: how can I specify left condition?Hibernate:如何指定左侧条件?
【发布时间】:2014-12-11 21:27:33
【问题描述】:

我有两张桌子:

  • 名为“Prova”的表 A 具有以下列:id、id_comitato、id_comitato_erog
  • 名为“comitato”的表 B 具有以下列:id_comitato, name

标准:

Criteria criteria = mySession.createCriteria(Prova.class, "p");
criteria.createCriteria("comitato", "c", CriteriaSpecification.LEFT_JOIN);

将这个查询用 SQL 翻译为:

SELECT * FROM Prova p LEFT JOIN comitato c ON p.id_comitato=c.id_comitato

但我想要的是以下内容:

SELECT * FROM Prova p LEFT JOIN comitato c ON p.id_comitato_erog=c.id_comitato

如何指定此连接条件?

非常感谢, 祝你有美好的一天!

【问题讨论】:

    标签: java hibernate join conditional-statements criteria


    【解决方案1】:

    你有没有尝试过这样的事情 -> Yet another post on Stackoverflow .基本上你必须做类似以下的事情:

    Criteria criteria = 
    mySession.createCriteria(Prova.class, "p")
           .createAlias("comitato", 
                        "c", 
                        Criteria.LEFT_JOIN,
                        Restrictions.eqProperty("p.id_comitato_erog", 
                                                "e.id_comitato"));
    

    【讨论】:

    • @yardrimz 非常感谢你..我采用了链接的其他解决方案并且它有效!
    • @yardrimz 哦,不,它不起作用 :( 这样查询是:SELECT * FROM Prova p LEFT JOIN comitato c ON p.id_comitato=c.id_comitato where p.id_comitato_erog=c .id_comitato
    • 好的!我已经解决了!我错过了 java 类中带有 id_comitato_erog 的@JoinColumn ..现在可以工作了!谢谢!
    • @smanulla 不客气,很高兴您设法解决了您的问题。
    猜你喜欢
    • 2016-11-13
    • 2011-02-19
    • 1970-01-01
    • 2012-06-05
    • 2011-11-12
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多