2015-05-07 1 views
0

Я переношу действительно старое приложение из toplink в Hibernate. двутавровой есть ниже код:Миграция из toplink/eclipselink equalOuterJoin to Hibenate Criteria

ExpressionBuilder expHVLMAVI ... 

expHVLMAVI.anyOfAllowingNone(perf2CollectionString).get("bereichsCode") 
.equalOuterJoin(bereichsCode) 

Любые идеи, как перенести его на Criteria API Hibenates? Я не знаю, что произойдет в этой строке (Любое объяснение будет оценено)

ответ

1

exHVLMAVI, вероятно, представляет класс/сущность в вашей модели, поэтому anyOfAllowingNone является внешним интерфейсом по отношению к perf2CollectionString, а затем соединением по отношению к bereichsCode. Это просто часть выражения, которое будет использоваться в остальной части запроса.

В JPQL, это будет equavlent к чему-то вроде:

"Select... from ExpHVLMAVI expHVLMAVI left outer join expHVLMAVI.perf2CollectionString as perf2CollectionString join perf2CollectionString.bereichsCode as bereichsCode" 

Что вы делаете с декларацией bereichsCode тогда до вас.

+0

Спасибо, что в JPQL он выглядит намного читабельнее, чем в API затмений – serg

0

Согласно JPQL Криса, я получил что-то вроде этого:

criteria.createAlias("fabrication." + perf2CollectionString, "perf", JoinType.LEFT_OUTER_JOIN); 
criteria.add(Restrictions.eq("perf.bereichsCode", bereichsCode)); 

Но я абсолютно не уверен, что если кто-то может проверить, если я не прав, и как это исправить, пожалуйста, помогите.