Hibernate延迟加载修改值

时间:2013-05-22 13:40:33

标签: java hibernate orm

我正在使用Spring框架扩展用Java编写的REST API,Hibernate ORM和Jackson用于JSON(反)序列化。

在一些API调用中,我需要在给定提供的值(例如,订阅ID)的情况下返回用户的帐户。有不同类型的帐户,因此包含类型值,以便客户可以确定他们正在处理的帐户类型。

在我的控制器中,我将提供的用户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保留类型的原始值而不是修改它?

1 个答案:

答案 0 :(得分:2)

您确定逻辑中没有错误返回对象的类型而不是帐户类型的字符串值吗?