【发布时间】:2012-03-06 12:04:24
【问题描述】:
我有一个网络服务,我想检索属于某个组的所有人员。我已经使用 NetBeans 生成了所有 java 类文件(右键单击项目,选择“新建”,然后选择“来自数据库的实体类”)并且所有类在数据库中都有其对应的表。
数据库架构如下所示:
Person
PK person_id: INT
person_name : VARCHAR
GroupPerson
pfK person_id: INT
pfK group_id: INT
Group
PK group_id: INT
group_name : VARCHAR
生成的四个java类是:
- 人
- 组人
- GroupPersonPK
- 组
我已经用一组和三个人填充了数据库。
在 Web 服务中有一个我命名为 getGroupAndPersons(int groupId) 的方法,它根据 group_id 返回组和所有相关人员。我将named query 称为“GroupPerson.findByGroupId”,它在 GroupPersson 中声明,它只是执行以下操作:
SELECT a FROM GroupPerson a WHERE a.groupPersonPK.groupId = :groupId
当我在 PHP 中从 SOAP 调用该方法时,我只得到一个包含所选组和属于该组的 first 人的结果列表,即使有很多人属于该组,也不会超过一个人群组。
所以我的问题是,为什么即使有很多人与一组相关的人,我从 web 服务返回的人也不会超过一个。
【问题讨论】:
-
您应该发布 Netbeans 为您生成的实体 - 至少是类声明和实例变量(不需要 getters/setters/constructors)。对于这样一个简单的设置,您实际上只需要两个实体(
Person和Group)。关联表的实体是多余的。 -
但是,如果我想获得选定的组和与之相关的所有人员,我需要调用 GroupPerson,不是吗?
标签: java php web-services soap wsdl