没有左侧的 DOT 节点
DOT node with no left-hand-side
我正在使用 jinq 1.8.11 版和 hibernate 4.3 版
使用休眠会话工厂而不是实体管理器。
我正在尝试以下查询:
JPAJinqStream<Routine> routineStream = stream.streamAll(getCurrentSession(), Routine.class);
if (text.isPresent()) {
final String searchText = text.get();
routineStream = routineStream
.leftOuterJoin(
(r, source) -> source.stream(NLSProperty.class),
(r, nls) -> nls.getVarKey().equals("routine.100.title")
).select(pair -> pair.getOne());"%" + searchText + "%")).select(Pair::getOne);
}
List<Routine> tp = routineStream.toList();
当变量文本不存在时,查询有效并且我得到了结果。
当存在变量文本时,我收到以下错误:
java.lang.IllegalStateException: DOT node with no left-hand-side!
知道我做错了什么吗?
我调试了 jinq,它生成的查询如下所示:
SELECT A FROM de.etherapists.ehealth.model.routine.Routine A LEFT OUTER JOIN de.etherapists.ehealth.model.NLSProperty B ON B.varKey = 'routine.100.title';
谢谢
好的,所以我将休眠版本升级到 5.1
仍在使用会话工厂而不是实体管理器。
代码现在是:
if (text.isPresent()) {
routineStream = routineStream
.leftOuterJoin(
(routine, source) -> source.stream(NLSProperty.class),
(routine, nls) -> routine.getTitle().equals(nls.getVarKey())
)
.where(pair -> JPQL.like(pair.getOne().getShortCode(), "%" + text + "%")
|| JPQL.like(pair.getTwo().getVarValue(), "%" + text + "%"))
.select(Pair::getOne)
}
它就像一个魅力
我正在使用 jinq 1.8.11 版和 hibernate 4.3 版 使用休眠会话工厂而不是实体管理器。
我正在尝试以下查询:
JPAJinqStream<Routine> routineStream = stream.streamAll(getCurrentSession(), Routine.class);
if (text.isPresent()) {
final String searchText = text.get();
routineStream = routineStream
.leftOuterJoin(
(r, source) -> source.stream(NLSProperty.class),
(r, nls) -> nls.getVarKey().equals("routine.100.title")
).select(pair -> pair.getOne());"%" + searchText + "%")).select(Pair::getOne);
}
List<Routine> tp = routineStream.toList();
当变量文本不存在时,查询有效并且我得到了结果。 当存在变量文本时,我收到以下错误:
java.lang.IllegalStateException: DOT node with no left-hand-side!
知道我做错了什么吗?
我调试了 jinq,它生成的查询如下所示:
SELECT A FROM de.etherapists.ehealth.model.routine.Routine A LEFT OUTER JOIN de.etherapists.ehealth.model.NLSProperty B ON B.varKey = 'routine.100.title';
谢谢
好的,所以我将休眠版本升级到 5.1 仍在使用会话工厂而不是实体管理器。
代码现在是:
if (text.isPresent()) {
routineStream = routineStream
.leftOuterJoin(
(routine, source) -> source.stream(NLSProperty.class),
(routine, nls) -> routine.getTitle().equals(nls.getVarKey())
)
.where(pair -> JPQL.like(pair.getOne().getShortCode(), "%" + text + "%")
|| JPQL.like(pair.getTwo().getVarValue(), "%" + text + "%"))
.select(Pair::getOne)
}
它就像一个魅力