2

私はすでにプロジェクトで QueryDSL を使用しており、POJO から JSON への変換をタイプセーフにするために (ab) 使用できるかどうか疑問に思っていました。現在、私は次のようなことをしています:

converter.toJson(entity, entity.getDetail(), "詳細");

これを次のように変更できればかっこいいと思いました。

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

次に、toJsonメソッドでq.detail引数を使用してプロパティの名前を抽出し、エンティティで getter を呼び出して値を取得します。EntityPathBase.getType().getSimpleClassName()を使用し、ゲッターにリフレクションを使用して実行できるはずですが、それが QueryDSL で既に実行できることかどうか疑問に思っています。

クエリエンティティで使用でき、指定されたサンプルでプロパティ名を返すPath.getMetadata ().getName()を使用して行った結果。BeanMapと組み合わせて、プロパティ値を取得します (Timo が提案したように、ありがとう!)。これで、getter 呼び出しを文字列と同期させる必要がなくなりました。リフレクションが使用されるようになったため、メンテナンス性を向上させるためにパフォーマンスがいくらか犠牲になります。

4

1 に答える 1

1

Querydsl CollectionsGuavaHelpersクラスhttp://www.querydsl.com/static/querydsl/3.2.4/apidocs/com/mysema/query/collections/GuavaHelpers.htmlを使用して、そのようなことを行うことができます

この場合、型安全性が必要かどうかはわかりませんが、ターゲット モデル (JSON) は静的に型付けされていないためです。

ユース ケースが Bean プロパティを JSON 構造にコピーすることである場合、このケースではおそらく BeanMap などの Bean ヘルパー クラスを使用します。

于 2013-10-31T09:24:44.967 に答える