gpt4 book ai didi

java - 使用表数据在java中动态创建一个类

转载 作者:行者123 更新时间:2023-12-02 07:39:35 30 4
gpt4 key购买 nike

我有以下要求,我需要公开一个 API,用户可以在其中发送自由形式的“查询”之类的表达式,并且我需要返回 true/false。例如:对于汽车对象,如果查询是

" (make = 'FORD' AND year IN (1990,1991)) OR type = 'SUV') ".

但是,“make”、“year”或“type”来自外部填充的表。

TABLE CAR_PROPERTIES (
propertyName VARCHAR2(40),
propertyValue VARCHAR2(10)
)

我首先遍历其他连接表来加载属性。

所以,如果有新的属性(和相应的值),我需要在查询中支持。

到目前为止,这就是我所做的:

  1. 如果不需要向类添加动态属性,我知道我可以在我的 Collection 中使用像 JoSQL 这样的东西。

  2. 一旦应用程序使用 Java Tools API 或 javaassist 启动,我就会考虑动态创建该类。

客户端坚持采用不需要添加新属性和部署代码的解决方案(尽管此 API 的“调用者”确实需要更改代码才能在查询中使用新属性)。

我不喜欢动态创建新类。寻找任何指示或解决方案。

最佳答案

Raj - 只是为您的设计提供一些建议和灵感:

  1. 甚至不会进行完整的 O/R 映射。我会考虑将您的领域特定语言翻译成 SQL。我用Python做过这样的事情。这要容易得多,因为您正在两种简单语言(自定义 DSL 和 SQL)之间进行语言到语言的翻译。通过强大的正则表达式,您可以拥有一个非常简洁且强大的框架来处理此类交互。 (参见 Regex Table Lexer 和其他模式)

  2. 有一些有趣的设计值得研究:

  3. 对于动态关系和属性表达式,我建议(嵌入)图数据结构这是一个有用的教程,显示了相对图映射:
    http://py2neo.org/tutorials/tables_to_graphs
    以及 Neo4J 的教程,我将其用于类似目的:
    http://docs.neo4j.org/chunked/stable/tutorials.html

关于java - 使用表数据在java中动态创建一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769765/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com