【问题标题】:Use Transient property in Hibernate在 Hibernate 中使用 Transient 属性
【发布时间】:2016-06-15 13:22:36
【问题描述】:

首先,我是 Hibernate 的新手。 我在 Netbeans 中构建了一个独立的 Java 应用程序,试图尽可能地保持 MVC 模型。我的模型类尽可能地类似于数据库表和列。数据库被规范化以避免冗余。 但是,我注意到在我的许多模型类中使用某个属性很方便。该属性在数据库中可用,但在大多数情况下,需要进行多次连接才能获得它。 因此,我将此属性添加到我的模型类中以便于访问。

示例: Object AObject B 有关系,Object C 也有关系。 Object C 具有 property X。 关系是一对多的; Object A 将主键 Object B 作为一列,依此类推。 现在我想找到所有连接到property XObject A。我必须进行多次连接才能得到答案。 Property X 也适用于Object A,但我不希望它作为数据库中Object A 的属性,因为那是冗余。在应用程序中,我将这个property X添加到Object A的类中,方便访问。

现在我想实现 Hibernate 而不是我自己设计的(服务)类,我不确定如何处理这个属性。我已在 POJO 中将其定义为“瞬态”,但如何填写此属性?如果我让 Hibernate 执行一个 get tot 数据库并将对象 (Object A) 返回给我,它将没有这个属性。我是否需要有一个具有此属性的额外构造函数并将 Hibernate 的对象转换为包含此属性的对象并将其返回给请求它的原始方法?

这样做的正确方法是什么?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    如果您使用的是 Hibernate,您的 A 类中可能会有这样的内容:

    @OneToMany
    private Collection<B> listOfB;
    

    在 B 中,您将拥有:

    @OneToMany
    private Collection<C> listOfC;
    

    因此,当您从数据库中获取 A 实体时,您可以执行 x 操作:

    a.getlistOfB(0).getListOfC(0).getX();
    

    【讨论】:

    • 这是一个集合,但想法相同。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多