2013-05-22 85 views
0

我正在使用Spring框架,Hibernate ORM和Jackson for JSON(de)序列化擴展用Java編寫的REST API。Hibernate延遲加載修改值

在一些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保留類型的原始值而不是修改它?

回答

2

您確定在您的邏輯中沒有返回對象類型的錯誤,而不是該帳戶類型的字符串值?

+0

我不這麼認爲 - 類似的代碼用於其他地方,如預期的那樣返回賬戶類型。不過我會仔細檢查一下。 –

+0

你是對的 - 模型中有一些奇怪的邏輯造成這種情況。謝謝! –