Hallo allerseits!
Irgendwie bringe ich es nicht fertig, dass mein Objekt, das von der WebService-Methode zurückgeliefert wird, zum Client korrekt übertragen wird.
Die Klasse Address:
Die Klasse Person:
Die WebService-Methode allPerson sieht wie folgt aus:
Wenn ich z.B. eine Person oder alle Personen abfrage, bekomme ich alle Personen, aber ohne Adressen. Ist etwas mit meinen Annotationen hier falsch? Oder, wo könnte das Problem liegen? Denn, bevor die Liste mit Personen zurückgeliefert wird, sind Person-Objekte (in der WebService-Methode allPerson) vollständig (mit Address-Objekten).
Danke.
Irgendwie bringe ich es nicht fertig, dass mein Objekt, das von der WebService-Methode zurückgeliefert wird, zum Client korrekt übertragen wird.
Die Klasse Address:
Java:
package test;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@Entity
@XmlRootElement(name = "address")
@XmlType(propOrder = { "id", "street", "zip", "city", "country" })
public class Address implements Serializable, Cloneable {
private static final long serialVersionUID = 8525167027806199483L;
@Id
@GeneratedValue
private int id;
private String street;
private int zip;
private String city;
private String country;
public Address() {
}
/**
* @param street
* @param zip
* @param city
* @param country
*/
public Address(String street, int zip, String city, String country) {
this.street = street;
this.zip = zip;
this.city = city;
this.country = country;
}
// Set- und Get-Methoden ...
}
Die Klasse Person:
Java:
package test;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@Entity
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "id", "firstName", "lastName", "username", "password", "address", "phone", "email" })
public class Person implements Serializable, Cloneable {
private static final long serialVersionUID = 5994436635037432873L;
@Id
@GeneratedValue
private int id;
private String firstName;
private String lastName;
@Column(unique = true)
private String username;
private String password;
// @XmlElement(name = "address")
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Address address;
private String phone;
private String email;
public Person() {
}
/**
* @param firstName String
* @param lastName String
* @param username String
* @param password String
* @param address Address
* @param phone String
* @param email String
*/
public Person(String firstName, String lastName, String username,
String password, Address address, String phone, String email) {
this();
this.firstName = firstName;
this.lastName = lastName;
this.username = username;
this.password = password;
this.address = address;
this.phone = phone;
this.email = email;
}
// Set- und Get-Methoden
}
Die WebService-Methode allPerson sieht wie folgt aus:
Java:
@WebMethod
public List<Person> allPerson() throws Exception {
List<Person> l = PersonManager.findAll();
// Zur Kontrolle
for (Person p: l){
System.out.prontln(p);
}
return l;
}
Wenn ich z.B. eine Person oder alle Personen abfrage, bekomme ich alle Personen, aber ohne Adressen. Ist etwas mit meinen Annotationen hier falsch? Oder, wo könnte das Problem liegen? Denn, bevor die Liste mit Personen zurückgeliefert wird, sind Person-Objekte (in der WebService-Methode allPerson) vollständig (mit Address-Objekten).
Danke.