Java中的Hibernate和子类化数据类

时间:2012-03-16 09:19:11

标签: java hibernate playframework persistence

使用Play,有一种简单的方法可以执行以下操作!框架和hibernate?

我有一篇包含pubDate,作者等通用数据的文章。 在课堂上有两个领域,标题和内容,但需要以不同的语言提供。包含id的所有其他数据应该是相同的。

系统的服务器端将根据客户端的设置选择要推出的标题/内容,可选择默认语言或首选语言。由于同步,重要的是保持所有链接语言的文章ID相同。

目前我在课堂上有内容和标题,我想知道我是否应该将具有所有基本信息的基类子类化并添加内容/标题,我们保留默认语言的内容/标题在基类中,并且可选地将additinoal语言的内容/标题添加为单独的类(并且在将其推送到客户端时,如果需要,将其替换为基类中的内容)。

解决此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我不会进行子类化,因为语言首选项是一个渲染问题。 Article没有不同的行为,因为内容使用的语言不同。

我的Article课程包括标题,内容和语言。主键现在是文章ID和语言。当用户要求提供特定标题时,我会使用文章ID以及他们的语言偏好或默认(如果没有提供)来查询它。

答案 1 :(得分: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)