2

我已经在一个项目中使用 QueryDSL,并且想知道是否可以(ab)使用它来使我的 POJO 到 JSON 转换类型安全。目前我做这样的事情:

converter.toJson(entity, entity.getDetail(), "detail");

我想如果我能把它改成这样会很酷:

QEntity q = QEntity.entity;
converter.toJson(entity, q.detail);

然后,在toJson方法中使用q.detail参数来提取属性的名称,并调用实体上的 getter 来检索值。使用EntityPathBase.getType().getSimpleClassName()并使用 getter 的反射应该是可行的,但我想知道 QueryDSL 是否已经可以做到这一点。

结果我使用了Path.getMetadata().getName(),它可用于查询实体并返回给定示例中的属性名称。结合BeanMap来检索属性值(正如 Timo 所建议的,谢谢!)。现在我不必让 getter 调用与字符串同步。当然这是一种权衡,因为现在使用反射,牺牲一些性能以获得更好的可维护性。

4

1 回答 1

1

您可以使用 Querydsl CollectionsGuavaHelpershttp://www.querydsl.com/static/querydsl/3.2.4/apidocs/com/mysema/query/collections/GuavaHelpers.html执行类似的操作

虽然我不确定在这种情况下是否需要类型安全,因为您的目标模型(JSON)不是静态类型的。

如果您的用例是将 bean 属性复制到 JSON 结构,我可能只使用 Bean 辅助类(如 BeanMap)。

于 2013-10-31T09:24:44.967 回答