我有带有Hibernate和验证注释的User实体,如下所示。
@Entity
@Table(name = "USER")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User", propOrder = {
"id",
"login"
})
public class User {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement(required = true, type = Long.class, nillable = true)
private Long id;
@Pattern(regexp = "^[a-zA-Z0-9_-]{3,20}$",
message = "Login must contains from 3 to 20 latin characters or numbers!")
@Column(name = "LOGIN", unique = true, nullable = false)
@XmlElement(required = true)
private String login;
}当我用entity和getUserRequest /getUserResponse编写xsd模式时,maven-jaxb2-plugin会将GetUserRequest.java、GetUserResponse.java和User.java与我的User类一起生成到包中(如果我尝试编译这个类,则会生成重复的类)。
<xs:complexType name="User">
<xs:sequence>
<xs:element name="id" type="xs:long" nillable="true"/>
<xs:element name="login" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getUserRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="userId" type="xs:long"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getUserResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="user" type="tns:User"/>
</xs:sequence>
</xs:complexType>
</xs:element>我想使用我的User类,而不是生成的类。(如果我删除生成的用户并启动应用程序,一切正常)。
这是我的春夏秋冬所需要的
@Endpoint
public class UserEndpoint {
@Autowired
private UserService userService;
@ResponsePayload
@PayloadRoot(namespace = SOAP_NAMESPACE, localPart = "getUserRequest")
public GetUserResponse getUser(@RequestPayload GetUserRequest request) {
springapp.domain.User user =
userService.getUser(request.getUserId());
GetUserResponse response = new GetUserResponse();
response.setUser(toSchemaType(user));
return response;
}
private springapp.schema.User toSchemaType(springapp.domain.User user) {
springapp.schema.User schemaUser = new springapp.schema.User();
if (user.getId() != null) {
schemaUser.setId(user.getId());
}
schemaUser.setLogin(user.getLogin());
return schemaUser;
}
}多亏了字典。我创建了domain.xjb
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jxb:bindings schemaLocation="users.xsd">
<jxb:bindings node="//xs:complexType[@name='User']">
<jxb:class ref="springapp.domain.User"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>并添加到maven-jaxb2-plugin配置中:
<bindingDirectory>src/main/resources</bindingDirectory>
<bindingIncludes>
<include>domain.xjb</include>
</bindingIncludes>对我来说很管用。
发布于 2015-01-23 14:15:37
发布于 2015-01-23 12:16:14
实际上,我将类CoversionUtils创建为弹簧WS样品。我花了两天没找到别的办法。
https://stackoverflow.com/questions/28107161
复制相似问题