2009-06-12 40 views
0

有没有办法将DetachedCriteria对象传递给jax-ws服务?DetachedCriteria和jax-ws

(我的问题是的DetachedCriteria没有一个无参数的构造函数,这是由JAX-WS需要)

回答

1

我想说......请不要那样做。

使用某些与Web服务分离的东西,然后将其与特定的Java + Hibernate组合绑定,更不用说,对休眠配置的更改可能会波及所有客户端,这是一件令人遗憾的事情。

你创造某种Query对象的它模仿Criteria的更好:

public class Query { 

    public void setTargetClass(...) {} 
    public void addPropertyEquals(...) {} 

    /* more add/set instructions */ 

} 

,然后在服务器端,您必须将Query转换为Criteria类。

+0

我同意,并不同意。解耦是好的,只要它不需要额外的工作。我不认为实现将从Hibernate和java中改变。为什么要创建另一个抽象层? “Hibernate是一种生活方式” - 所以它不容易摆脱它... – pihentagy 2009-06-15 08:59:52

0

JAXB是基于注释的,因此您需要注释DetachedCriteria及其所有子类,然后才能通过JAX-WS接口(在无参数构造函数的要求的顶部)传递它。这几乎不可行:)

但是你可以通过标准的Java序列化机制将DetachedCriteria序列化成字节流并在远程端反序列化它。我同意,这种方法是错误的使用XML。