gpt4 book ai didi

java - 如何在运行时将java自定义或字符串对象添加到DAO模型对象?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:06 24 4
gpt4 key购买 nike

我需要将新的 String 对象添加到自定义类型对象的数组中,在本例中为 ServiceOrderEntity。我知道这种破坏了 ServiceOrderEntity 完整性,但我必须从 jsp 访问该字段。最好的方法是什么?

DAO 类:

...

SQLQuery localSQLQuery = localSession.createSQLQuery(query).addEntity(ServiceOrderEntity.class);
localList = localSQLQuery.list();
Iterator itr = localList.iterator();
while (itr.hasNext()){
String field = "some value";
itr.next().append( field ); // something like that maybe....
}
return to Service class
...

服务等级

...
List list = perform DAO request
model.addAttribute("serviceOrderList", localList);
....
<小时/>

更新

我拥有 Hibernate 生成的所有模型,但我不想碰它们。我需要添加到自定义对象,在本例中为 ServiceOrderEntity 或找到解决方法。我想我可以复制它并向其附加新字段(使用推土机)?新字段是其他复杂子查询的结果。

运行时的ServiceOrderEntity对象列表:

<小时/>
-list
--[0]model.ServiceOrderEntity@d826d3c7
---createdBy = {....}
---serviceRequestFK{java.Lang.Integer} // << this one
--[1]
....
etc
<小时/>

我需要在 ServiceOrderEntity 中使用 serviceRequestFK 获取name。只要 java 不允许热修复(将自定义字段添加到已创建的对象中),我就需要找到一种方法将 name 字段传递给 JSP。正确的方法是什么?我真的不想包含来自 jsp 的 DAO 方法请求...创建单独的姓名列表?...

最佳答案

由于 Java 不允许混合(又名猴子修补),您必须:

  • 将字段添加到基本实体。
  • 返回包含此字段的子类。

如果您想添加该字段以便 Service 类可以完成其工作,那么这很公平。但是,如果新字段是有效负载输入/输出的一部分,则考虑该特定服务,然后考虑:

  • 为每个服务调用创建特定于用例的负载。
  • 将这些结果映射到可重用对象模型上。 (您可以使用类似 Dozer 的内容)。

此建议背后的基本原理是遵循契约优先的开发原则。

  • 您的模型将更加通用,因此可以重复使用。您可以将可重用的行为添加到模型类中。您的服务将使用这些行为来编排流程。 (与“贫血”实体相反)。
  • 随着时间的推移,您的服务负载可以保持相对稳定。因此,对模型的更改不会影响所有服务订阅者。 (又名“不要泄露你的胆量”)。

关于java - 如何在运行时将java自定义或字符串对象添加到DAO模型对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256256/

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