Java SOAP对象返回空值

Java SOAP对象返回空值,java,soap,entity,one-to-many,many-to-one,Java,Soap,Entity,One To Many,Many To One,我有一些简单的对象,它们之间有关系。一切正常,但当我为SOAP请求发布对象时,当我设置客户端和cartrack之间的关系时,它返回null。我做错了什么 这是我的密码: @Entity public class Client extends User implements Serializable { @Temporal(javax.persistence.TemporalType.DATE) private Date birthdate; private String

我有一些简单的对象,它们之间有关系。一切正常,但当我为SOAP请求发布对象时,当我设置客户端和cartrack之间的关系时,它返回null。我做错了什么

这是我的密码:

@Entity
public class Client extends User implements Serializable {
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date birthdate;
    private String address;
    private String zipcode;
    private String city;
    private String phone;
    private String info;
    private boolean active;
    @OneToMany( cascade = CascadeType.ALL,
                fetch = FetchType.EAGER,
                targetEntity = Cartrack.class, 
                mappedBy = "client"
                )
    private List<Cartrack> cartracks;

    /**
     * @return the birthdate
     */
    public Date getBirthdate() {
        return birthdate;
    }

    /**
     * @param birthdate the birthdate to set
     */
    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }

    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }

    /**
     * @return the zipcode
     */
    public String getZipcode() {
        return zipcode;
    }

    /**
     * @param zipcode the zipcode to set
     */
    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }

    /**
     * @return the city
     */
    public String getCity() {
        return city;
    }

    /**
     * @param city the city to set
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     * @return the phone
     */
    public String getPhone() {
        return phone;
    }

    /**
     * @param phone the phone to set
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * @return the info
     */
    public String getInfo() {
        return info;
    }

    /**
     * @param info the info to set
     */
    public void setInfo(String info) {
        this.info = info;
    }

    public String dateToString(){
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        return formatter.format(this.birthdate);
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public List<Cartrack> getCartracks() {
        return cartracks;
    }

    public void setCartracks(List<Cartrack> cartracks) {
        this.cartracks = cartracks;
    }
}

@Entity
public class Cartrack implements Serializable {

    @Id
    private String id;
    @OneToOne(  mappedBy = "cartrack", 
                targetEntity = Vehicle.class,
                cascade = CascadeType.ALL,
                fetch = FetchType.EAGER
            )
    private Vehicle vehicle;
    @ManyToOne(targetEntity = Client.class)
    private Client client;

    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return the vehicle
     */
    public Vehicle getVehicle() {
        return vehicle;
    }

    /**
     * @param vehicle the vehicle to set
     */
    public void setVehicle(Vehicle vehicle) {
        this.vehicle = vehicle;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Cartrack)) {
            return false;
        }
        return ((Cartrack) obj).id == this.id;
    }

    public Client getClient() {
        return client;
    }

    public void setClient(Client client) {
        this.client = client;
    }
}


@Entity
public class Vehicle implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String licenseNr;
    private boolean stolen;
    @OneToOne(targetEntity = Cartrack.class)
    private Cartrack cartrack;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the licenseNr
     */
    public String getLicenseNr() {
        return licenseNr;
    }

    /**
     * @param licenseNr the licenseNr to set
     */
    public void setLicenseNr(String licenseNr) {
        this.licenseNr = licenseNr;
    }

    /**
     * @return the stolen
     */
    public boolean isStolen() {
        return stolen;
    }

    /**
     * @param stolen the stolen to set
     */
    public void setStolen(boolean stolen) {
        this.stolen = stolen;
    }

    /**
     * @return the cartrack
     */
    public Cartrack getCartrack() {
        return cartrack;
    }

    /**
     * @param cartrack the cartrack to set
     */
    public void setCartrack(Cartrack cartrack) {
        this.cartrack = cartrack;
    }
}
@实体
公共类客户端扩展用户实现可序列化{
@时态(javax.persistence.TemporalType.DATE)
私人生日;
私有字符串地址;
私有字符串zipcode;
私人城市;
私人电话;
私有字符串信息;
私有布尔活动;
@OneToMany(级联=级联类型.ALL,
fetch=FetchType.EAGER,
targetEntity=Cartrack.class,
mappedBy=“客户端”
)
私人名单行李架;
/**
*@返回生日
*/
公共日期getBirthdate(){
返回出生日期;
}
/**
*@param birthdate要设置的生日
*/
公共无效设置出生日期(日期出生日期){
this.birthdate=生日;
}
/**
*@返回地址
*/
公共字符串getAddress(){
回信地址;
}
/**
*@param address要设置的地址
*/
公共无效设置地址(字符串地址){
this.address=地址;
}
/**
*@返回zipcode
*/
公共字符串getZipcode(){
返回zipcode;
}
/**
*@param zipcode要设置的zipcode
*/
public void setZipcode(字符串zipcode){
this.zipcode=zipcode;
}
/**
*@返回城市
*/
公共字符串getCity(){
回归城市;
}
/**
*@param city要设置的城市
*/
公共城市(字符串城市){
this.city=城市;
}
/**
*@还电话
*/
公共字符串getPhone(){
回电话;
}
/**
*@param phone要设置的电话
*/
公用无效设置电话(字符串电话){
this.phone=电话;
}
/**
*@返回信息
*/
公共字符串getInfo(){
退货信息;
}
/**
*@param info要设置的信息
*/
公共void setInfo(字符串信息){
this.info=info;
}
公共字符串dateToString(){
SimpleDataFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd”);
返回formatter.format(this.birthdate);
}
公共布尔isActive(){
主动返回;
}
public void setActive(布尔激活){
这个.active=active;
}
公共列表getCartracks(){
返回行李架;
}
公共无效设置货架(列出货架){
this.cartracks=cartracks;
}
}
@实体
公共类Cartrack实现了可序列化{
@身份证
私有字符串id;
@OneTONE(mappedBy=“cartrack”,
目标实体=车辆等级,
cascade=CascadeType.ALL,
fetch=FetchType.EAGER
)
私家车;
@manytone(targetEntity=Client.class)
私人客户;
/**
*@返回id
*/
公共字符串getId(){
返回id;
}
/**
*@param id要设置的id
*/
公共无效集合id(字符串id){
this.id=id;
}
/**
*@还车
*/
公共车辆{
返回车辆;
}
/**
*@param vehicle要设置的车辆
*/
公共车辆(车辆){
本车=车辆;
}
@凌驾
公共布尔等于(对象obj){
如果(!(车载支架的obj实例)){
返回false;
}
return((Cartrack)obj).id==this.id;
}
公共客户端getClient(){
返回客户;
}
公共void setClient(客户端){
this.client=client;
}
}
@实体
公共类车辆实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私人字符串许可证持有人;
私家车被盗;
@OneToOne(targetEntity=Cartrack.class)
私人马车;
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
/**
*@返回许可证持有人
*/
公共字符串getLicenseNr(){
返回许可证持有人;
}
/**
*@param licenseNr要设置的licenseNr
*/
公共无效setLicenseNr(字符串licenseNr){
this.licenseNr=licenseNr;
}
/**
*@归还被盗物品
*/
公共布尔值isStolen(){
归还被盗物品;
}
/**
*@param把偷来的东西偷走了
*/
公共无效设置(布尔值被盗){
这是偷来的;
}
/**
*@返回行李架
*/
公共Cartrack getCartrack(){
返回行李架;
}
/**
*@param cartrack要设置的cartrack
*/
公共无效设置Cartrack(Cartrack Cartrack){
this.cartrack=cartrack;
}
}

您所说的“为SOAP请求发布我的对象”是什么意思?我找不到任何与SOAP相关的代码…我得到了一个SOAP web服务,它检索一个客户端。正如您所看到的,客户机对象与cartrack有关系。当客户端与任何cartrack没有关系时,soap web服务将返回用户对象。但是,当客户端有一些Cartrack时,soap web服务返回null。