2012-03-16 30 views
2

是否有一種簡單的方法來執行以下操作,使用Play!框架和休眠?Java中的休眠和繼承數據類

我有一個類,如pubDate,作者等通用數據文章 在該類有兩個領域,標題和內容,但需要提供不同的語言。所有其他數據,包括id應該是相同的。

系統的服務器端將根據客戶端的設置選擇推出哪個標題/內容,默認語言或偏好語言(如果可用)。由於缺乏同步性,保持所有鏈接語言的文章ID都是相同的。

目前我在課堂上有內容和標題,想知道是否應該繼承具有所有基本信息的基類並添加內容/標題,我們將默認內容/標題語言,並且可選地將additinoal語言的內容/標題作爲單獨的類添加(並且如果需要的話,將其推送給客戶端在基類中將其替換爲內容)。

解決此問題的最佳方法是什麼?

回答

2

我不會繼承,因爲語言偏好是一個渲染問題。僅僅因爲內容使用不同的語言,Article沒有任何不同的行爲。

我會有Article類包括標題,內容和語言。主鍵現在是文章ID和語言。當用戶要求某個特定的標題時,我會使用文章ID和他們的語言首選項查詢它,如果沒有提供,則使用默認語言。

+0

它有一個簡單的方法來修改休眠模式來接受這個,因爲應用程序是在生產,我也正在尋找一個解決方案可以以簡單的方式實現,而無需「轉換」整個數據庫。 – 2012-03-26 08:00:36

0

如果在這種情況下不容易使用i18n,我會在單獨的表中實現特定於語言的數據。

您可以有ArticleArticleDetail型號。在這個模型中,你有一篇文章和這篇文章的許多語言實例。

@Entity 
public class Article extends Model { 

    private Author author; 
    private Date pubDate; 

    ... 

} 

@Entity 
public class ArticleDetail extends Model { 

    @MayToOne 
    private Article 
    private String languageCode; 
    private String title; 
    private String content; 
    ... 

} 

所以,如果你想選擇一個內容只是調用ArticeDetail.find("article.id=? and langCode=?", articleId, langCode)