我是JPA / EclipseLink的新手,我正在为数据库建立一个宁静的接口,该接口包含有关程序执行的状态信息。我需要提供的大多数信息是通过一个名为RUN的表实现的。名为RUNEVENT的表具有链接到RUN表的外键。然后有一个称为TASKEVENT的表,该表具有RUNEVENT的外键,依此类推,总共有7个表。有些关系是一对一的,有些是一对多的。已经为所有表定义了实体类,并且使用这些相同的类编组为REST响应的xml。大多数情况下,我想获取由多个运行条目组成的查询结果,并且只需要RUN表中的数据(即,我不想遵循关联)。但是,尤其是有一次我需要爬网所有关联并建立xml响应。如果我通过使用FetchType.LAZY和@XmlTransient仅填充运行实体对象本身来针对RUN表进行查询。查询速度非常快,但我无法遍历其他用例的所有信息。如果我不对这些属性使用FetchType.LAZY和@XmlTransient。对RUN表进行常规查询时,查询和结果填充花费的时间太长,无法使用。
我尝试通过命名外键@Transient(对于JPA)来尝试拆分RUN实体,以使其不通过外键连接到RUNEVENT实体。然后,我成功地在RUN表中查询用于查询RUNEVENT TABLE的RUN_ID。然后,当我对RUNEVENT表进行查询时,我得到了一个我希望是RUNEVENT对象的结果列表,但它返回的是RUN对象,就像它将外键跟随回RUN表一样,而不是直接查询RUNEVENT表。 / p>
总之,在大多数情况下,当结果集包含许多RUN对象时,我只希望RUN表中的数据而不遵循关联。但是,在某些情况下,我想深入研究,尤其是获得一次跑步条目的所有关联及其实体。
反正有做我想通过JPA进行的工作还是需要直接访问数据库?