我有一个使用JPA注释映射的域对象。 User
有许多Question
个对象(可能是1000个)。我必须在用户对象的问题列表中将获取类型设置为eager
。我在Web服务中有这样的路径:
GET /users/3
这当然会返回用户对象以及他/她撰写的所有问题。 Question
有自己的关系等等......
我的观点是,获得特定用户需要一点时间。最好只获得一些问题,然后根据需要加载更多问题。但是,我不认为我可以用那些注释做到这一点。那么我是否需要删除这些注释,而是手动查找特定用户的问题,然后为用户分配一个子集?
在Web服务中解决此类案例的常用方法是什么?如果提供的示例/伪代码将非常适用。我正在使用Spring MVC 3.2。
答案 0 :(得分:3)
有多种方法可以解决这个问题。以下是我所知道的一些内容:
/users/1/questions
来提问。 limit
和offset
。expand=true
参数你可以传入。如果它是假的,它将返回“顶级数据”。如果这是真的,它将返回一个用户的所有问题。如果您明确要求,您只能获得所有数据。 答案 1 :(得分:0)
我认为答案是JPA和实体本身。我们还有一些用例需要返回一组非常大的数据,但在使用JPA + Hibernate时不需要返回相关数据。转换这些JPA实体真是太痛苦了。
所以,我们决定如何解决这些问题:
如果您需要维护关系,请考虑使用图表生成器,如下所示:http://code.google.com/p/google-gson/source/browse/trunk/extras/src/main/java/com/google/gson/graph/GraphAdapterBuilder.java?r=1170