有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以编写返回泛型类型集合的webservice?春天3

在我的数据库中,我有许多实体类,我通过Hibernate对它们运行standart CRUD操作。创建泛型dao类以使用类进行所有主要操作不是问题。例如,在dao中,我有如下方法:

<T> List<T> loadAll(Class clazz)

现在我想通过Spring3操作的web服务向web服务客户机公开这些方法

我看到的唯一方法是为所有实体实现web方法,即编写一个看起来像

class BookResponse { List<BookEntity> books; }

。。。并在相应的web方法“BookResponse getAllBooks()”中返回。这将破坏我通过使用dao和泛型使代码更简单的尝试

还有别的办法吗? 如果不为我的所有实体实现web方法,我如何做到这一点? 如果无法使用通用web服务,是否有其他方法可以简单地解决此任务

更新: 目前,我正在尝试实现一个response类,它应该如下所示

public class ServiceResponse<T>{

    @XmlElementWrapper( name = "data" )
    @XmlElements( @XmlElement(name = "a", type = EntityA.class), @XmlElement(name = "b", type = EntityB.class) )
    private List<T> data = new ArrayList<T>(  );

    //getters,setters
}

因此,我希望能够插入任何实体的列表,这些实体通过注释映射到此响应。这不会产生错误,但web服务给我的响应是空的


共 (1) 个答案

  1. # 1 楼答案

    我认为您需要一个新的POJO“GenericEntity”,它可以保存任何域实体类实例的信息
    它将保存一个类型字符串和一个任意/通用的命名属性列表
    然后,它可以用来表示任何真实的域实体

    例如
    类型=书本
    属性=(标题=凤凰社,作者=J K罗琳)

    例如
    类型=汽车
    属性=(make=Renault,model=Clio)

    这些例子展示了字符串属性,所以你必须弄清楚这是否足够好,或者你是否需要强类型输入——这是可能的,但更难

    然后,您可以通过web服务公开您的“GenericEntity”,允许客户端进行调用,并指定他们希望搜索的域实体,甚至允许他们指定搜索条件。 添加和删除也可以用类似的方式完成

    大卫