[英]Expression parser for Predicates in JPA
在基於命令行的應用程序中,我想為過濾數據庫結果提供基本支持。 為此,我需要解析用戶輸入。 我想支持這些令牌:
and
、 or
、 not
和括號=
, !=
, <
, >
, >=
, <=
因此,輸入字符串可能如下所示:
(age > 3 or name != 'tom') and city='london' and ((birthday=01.01.2010 orbirthday >= 01.01.2013))
基本的東西。
問題:我在哪里可以獲得(標記器和)解析器?
然后我會將結果轉換為CriteriaQuery
JPA 的Predicate
s。 首先我想,我可以在命令行中提供 JPQL 並讓用戶指定基於 SQL 的限制。 但我不想讓用戶編寫可能停止工作的條件,例如當數據庫模式更改時。
您正在搜索一些標記器和解析器。
ANTLR 是一個詞法分析器/解析器生成器,以及巨大的語法存儲庫,其中還包含 SQL - 即使在https://github.com/antlr/grammars-v4/tree/master/sql上還包含一些常見數據庫的方言。
所以如果你仍然有這個問題,你可以免費生成解析器,只關心將抽象語法樹轉換成 JPA 標准調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.