簡體   English   中英

JPA 中謂詞的表達式解析器

[英]Expression parser for Predicates in JPA

在基於命令行的應用程序中,我想為過濾數據庫結果提供基本支持。 為此,我需要解析用戶輸入。 我想支持這些令牌:

  • 布爾(邏輯)運算符,包括andornot和括號
  • 變量、字符串、日期和數字
  • 比較運算符: = , != , < , > , >= , <=

因此,輸入字符串可能如下所示:

(age > 3 or name != 'tom') and city='london' and ((birthday=01.01.2010 orbirthday >= 01.01.2013))

基本的東西。

問題:我在哪里可以獲得(標記器和)解析器?

  • 是否已經有支持這些基礎知識的庫?
  • 如果沒有,我知道有一些工具可以為 Tokenizers 和 Parsers 生成 Java 類。 你有什么建議?

然后我會將結果轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM