私は、Spring フレームワーク、Hibernate ORM、および JSON (de)serialization 用の Jackson を使用して、Java で記述された REST API の拡張に取り組んでいます。
いくつかの API 呼び出しで、提供された値 (サブスクリプション ID など) を指定してユーザーのアカウントを返す必要があります。アカウントにはさまざまな種類があるため、type 値が含まれているため、クライアントはどの種類のアカウントを扱っているかを判断できます。
私のコントローラーでは、提供されたユーザー ID を、このメソッドを呼び出すサービス呼び出しに渡します。
public Account getAccountBySubscriptionId(long subscriptionId) {
ServiceSubscription subscription = subscriptionDAO.load(subscriptionId);
if(subscription != null) {
return subscription.getAccount();
} else {
return null;
}
}
これにより、次のような JSON が返されると予想されます。
{
"type":"account_type_goes_here",
"id":1,
"accountNumber":"100"
}
ただし、Hibernate の遅延読み込みは型の値を変更しているようです (UserAccount はオブジェクトのクラスであることに注意してください)。
{
"type":"UserAccount_$$_javassist_1",
"id":2,
"accountNumber":"37"
}
タイプを変更するのではなく、Hibernate に元の値を保持させるにはどうすればよいですか?