Cześć, mam problem którego nie mogę rozwiązać. Stworzyłem relację jeden do wielu(jeden user wiele adresów). Kontroler Postowy działa poprawnie dodaje rekordy do tabel. Problem pojawia się przy Gecie. Co może być przyczyną.
User:
package com.example.entity;
import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity(name = "users")
public class UserEntity implements Serializable {
private static final long serialVersionUID = -4652777307512175027L;
@Id
@GeneratedValue
private long id;
@Column(nullable = false)
private String userId;
@Column(nullable = false, length = 50)
private String firstName;
@Column(nullable = false, length = 50)
private String lastName;
@Column(nullable = false, length = 100,unique=true)
private String email;
private String password;
@Column(nullable = false)
private String encryptedPassword;
private String emailVerificationToken;
@Column(nullable = true, columnDefinition = "boolean default false")
private Boolean emailVerificationStatus;
@OneToMany(mappedBy="userDetails",cascade=CascadeType.ALL)
private List<AddressEntity> addresses;
public List<AddressEntity> getAddresses() {
return addresses;
}
public void setAddresses(List<AddressEntity> addresses) {
this.addresses = addresses;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEncryptedPassword() {
return encryptedPassword;
}
public void setEncryptedPassword(String encryptedPassword) {
this.encryptedPassword = encryptedPassword;
}
public String getEmailVerificationToken() {
return emailVerificationToken;
}
public void setEmailVerificationToken(String emailVerificationToken) {
this.emailVerificationToken = emailVerificationToken;
}
public Boolean getEmailVerificationStatus() {
return emailVerificationStatus;
}
public void setEmailVerificationStatus(Boolean emailVerificationStatus) {
this.emailVerificationStatus = emailVerificationStatus;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
Adres:
package com.example.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import com.example.shared.dto.UserDto;
@Entity(name = "addresses")
public class AddressEntity implements Serializable {
private static final long serialVersionUID = 4045874591122010207L;
@Id
@GeneratedValue
private long id;
@Column(length = 30, nullable = false)
private String addressId;
@Column(length = 15, nullable = false)
private String city;
@Column(length = 30, nullable = false)
private String country;
@Column(length = 30, nullable = false)
private String streetName;
@Column(length = 6 )
private String postalcode;
@Column(length = 30, nullable = false)
private String type;
@ManyToOne
@JoinColumn(name="users_id")
private UserEntity userDetails;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAddressId() {
return addressId;
}
public void setAddressId(String addressId) {
this.addressId = addressId;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getStreetName() {
return streetName;
}
public void setStreetName(String streetName) {
this.streetName = streetName;
}
public String getPostalcode() {
return postalcode;
}
public void setPostalcode(String postalcode) {
this.postalcode = postalcode;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public UserEntity getUserDetails() {
return userDetails;
}
public void setUserDetails(UserEntity userDetails) {
this.userDetails = userDetails;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
Controller:
@GetMapping(path = "/{id}", produces = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE })
public UserRest getUser(@PathVariable String id) {
UserRest userRest = new UserRest();
UserDto userDto = userService.getUserByUserId(id);
BeanUtils.copyProperties(userDto, userRest);
return userRest;
}
Postman:
<UserRest>
<userId>m0od418uzk30gegnxz2r0adbf5fuad</userId>
<firstName>Adam7</firstName>
<lastName>Kowalski7</lastName>
<email>kuba@Nowako06</email>
<addresses>
<addresses>
<id>49</id>
<addressId>3zthhxdj68sfxbkwi0lsxw8we15ggx</addressId>
<city>Warsawa</city>
<country>Poland</country>
<streetName>Wiejska</streetName>
<postalcode>ABCCAB</postalcode>
<type>billing</type>
<userDetails>
<id>48</id>
<userId>m0od418uzk30gegnxz2r0adbf5fuad</userId>
<firstName>Adam7</firstName>
<lastName>Kowalski7</lastName>
<email>kuba@Nowako06</email>
<password>1237</password>
<encryptedPassword>$2a$10$qcwtfxZCR/tiC.0vul/nDO56di/oCi1ev.XP2ZgNYC0/aFOIiUo0K</encryptedPassword>
<emailVerificationToken/>
<emailVerificationStatus>false</emailVerificationStatus>
<addresses>
<addresses>
<id>49</id>
<addressId>3zthhxdj68sfxbkwi0lsxw8we15ggx</addressId>
<city>Warsawa</city>
<country>Poland</country>
<streetName>Wiejska</streetName>
<postalcode>ABCCAB</postalcode>
<type>billing</type>
<userDetails>
<id>48</id>
<userId>m0od418uzk30gegnxz2r0adbf5fuad</userId>
<firstName>Adam7</firstName>
<lastName>Kowalski7</lastName>
<email>kuba@Nowako06</email>
<password>1237</password>
<encryptedPassword>$2a$10$qcwtfxZCR/tiC.0vul/nDO56di/oCi1ev.XP2ZgNYC0/aFOIiUo0K</encryptedPassword>
<emailVerificationToken/>
<emailVerificationStatus>false</emailVerificationStatus>
<addresses>
<addresses>
<id>49</id>
<addressId>3zthhxdj68sfxbkwi0lsxw8we15ggx</addressId>
I tak w nieskończoność dodam że w tabeli User są tylko dwa rekordy. Może ktoś podpowie w czym może być problem. Z góry dzięki za każdą poradę.