2009-11-20 41 views
-1

我有一个关于Java Hibernate的痛苦问题。 我在我的模型中有我自己的POJO类,并且我希望将该类的实例的查询提交到我的关系数据库的表中。问题是,我想向不同的表提交几个不同的查询。例如: 我有一个公共汽车班,代表巴士。我有一个BusesOnTheLine表,一个BusesWaitingForRepair表。现在有时候我必须在BusesOnTheLine表中添加一个新行,有时候会添加到另一行。每张桌子都有自己的方案,所以我没有(双射)一对一的对应关系。 我想应该有一个像.NET一样的服务类,它可能对每个使用HQL(Hibernate Query Langugage)的查询都有一个方法,但我无法找到它。 :( 任何有关解决方案的想法Java Hibernate服务类

回答

2

听起来像是在你的数据库给我一个非常标准化的设计,它不处于休眠

我同意一个总线对象中的缺陷;?。我同意总线表。但为什么你有几个表看起来像不同状态的总线?

我建议一个BUS_STATUS表的行像“ON_THE_LINE”,“WAITING_FOR_REPAIR”和BUS表中的外键指向主键

现在你的公共汽车类有一个单一的状态,与它的状态对象进行一对一的映射,并且你全部设置好了。

+0

是的,但事情是,我必须存储其他东西,如时间戳输入行,等等...... 你说,我应该只生成总线的子类,并使用它们来存储和检索数据从DB?我对创建这些子类的实例以将数据保存到数据库的想法不满意。我希望在Hibernate中有一个类服务类的解决方案,我可以将一个总线传递给它的一个方法,并且该方法为我执行数据库查询。 – gmate 2009-11-20 11:32:51

+0

不,我没有说任何子类。一类巴士,其状态可以随时间变化。如果您需要维护特定总线的状态历史记录,则创建一个具有值和时间戳的状态对象,并让它与总线具有1:m的关系。 Hibernate是关于持久性的;服务是一个单独的事情,海事组织。 – duffymo 2009-11-21 03:37:52

0

如果你有几个表都代表不同状态的总线,那么你可能需要使用每个子类策略的表寻找一个继承。也就是说,总线的每个状态都可能是总线的一个子类,然后当您保存总线时,休眠会为您插入右侧表格。当查询你可以查询公共汽车时,你可以得到所有的公交车,或者你可以查询BussesOnTheLine,在这种情况下只能得到这些公交车。