我已经在一个项目中使用 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 调用与字符串同步。当然这是一种权衡,因为现在使用反射,牺牲一些性能以获得更好的可维护性。