在Hibernate中使用Transient属性

时间:2016-06-15 13:22:36

标签: java hibernate

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

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

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

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

1 个答案:

答案 0 :(得分:1)

如果您正在使用Hibernate,您可能在类A中有这样的东西:

@OneToMany
private Collection<B> listOfB;

在B中你将拥有:

@OneToMany
private Collection<C> listOfC;

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

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