Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 弹簧不';t在oneToMany关系中保存列表_Spring_Spring Boot_Spring Mvc_Servlets_Spring Data Jpa - Fatal编程技术网

Spring 弹簧不';t在oneToMany关系中保存列表

Spring 弹簧不';t在oneToMany关系中保存列表,spring,spring-boot,spring-mvc,servlets,spring-data-jpa,Spring,Spring Boot,Spring Mvc,Servlets,Spring Data Jpa,我有这个地址 package com.appdeveloperblog.app.ws.io.entity; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.

我有这个地址

package com.appdeveloperblog.app.ws.io.entity;

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.JoinColumn;
import javax.persistence.ManyToOne;

@Entity(name = "addresses")
public class AddressEntity implements Serializable {
private static final long serialVersionUID = 3652691377296902875L;

@Id
@GeneratedValue
private long id;

@Column(length = 30, nullable = false)
private String addressId;

@Column(length = 15, nullable = false)
private String city;

@Column(length = 15, nullable = false)
private String country;

@Column(length = 100, nullable = false)
private String streetName;

@Column(length = 7, nullable = false)
private String postalCode;

@Column(length = 10, nullable = false)
private String type;

@ManyToOne(cascade = CascadeType.ALL)
@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;
    }

}
这是一个用户实体

package com.appdeveloperblog.app.ws.io.entity;

import java.io.Serializable;
import java.util.List;

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.OneToMany;

@Entity(name = "users")
public class UserEntity implements Serializable {

    private static final long serialVersionUID = -3772691377276902875L;

    @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 = 120, unique = true)
    private String email;

    @Column(nullable = false)
    private String encryptedPassword;

    private String emailVerificationToken;

    @Column(nullable = false)
    private Boolean emailVerificationStatus = false;

    @OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
    private List<AddressEntity> 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 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;
    }

}

下面的课程是你想要达到的目标的精简版本。请与您的类进行比较,它应该可以很好地工作唯一的区别是我删除了额外的字段来轻松测试它。检查用户控制器映射方法中的代码

UserEntity.java

@Entity
@Table(name = "users")
public class UserEntity implements Serializable {

    private static final long serialVersionUID = 4865903039190150223L;
    @Id
    @GeneratedValue
    private long id;

    @Column(length = 50, nullable = false)
    private String firstName;

    @Column(length = 50, nullable = false)
    private String lastName;

    @OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
    private List<AddressEntity> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressEntity> getAddresses() {
        return addresses;
    }

    @Override
    public String toString() {
        return "UserEntity [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", addresses="
                + addresses + "]";
    }

    public void setAddresses(List<AddressEntity> addresses) {
        this.addresses = addresses;
    }

}
@Entity(name = "addresses")
public class AddressEntity implements Serializable {
    private static final long serialVersionUID = 3652691377296902875L;

    @Id
    @GeneratedValue
    private long id;

    @Column(length = 15, nullable = false)
    private String city;

    @Column(length = 15, nullable = false)
    private String country;

    @JsonIgnore
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "users_id")
    private UserEntity userDetails;

    public long getId() {
        return id;
    }

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

    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 UserEntity getUserDetails() {
        return userDetails;
    }

    public void setUserDetails(UserEntity userDetails) {
        this.userDetails = userDetails;
    }

    @Override
    public String toString() {
        return "AddressEntity [id=" + id + ", city=" + city + ", country=" + country + "]";
    }

}
public class UserDto implements Serializable {
    private static final long serialVersionUID = 6835192601898364280L;
    private long id;
    private String firstName;
    private String lastName;
    private List<AddressDTO> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressDTO> getAddresses() {
        return addresses;
    }

    public void setAddresses(List<AddressDTO> addresses) {
        this.addresses = addresses;
    }

}
public class AddressDTO {

    private long id;

    private String city;

    private String country;

    public long getId() {
        return id;
    }

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

    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;
    }

}
@RestController
public class UserController {

    @Autowired
    UserRepository repository;

    @PostMapping("map")
    @ResponseBody
    public UserEntity map(@RequestBody UserDto userDto) {
        ModelMapper modelMapper = new ModelMapper();
        UserEntity userEntity = modelMapper.map(userDto, UserEntity.class);
        for (AddressEntity address : userEntity.getAddresses()) {
            address.setUserDetails(userEntity);
        }
        repository.save(userEntity);
        return userEntity;
    }
}
UserDto.java

@Entity
@Table(name = "users")
public class UserEntity implements Serializable {

    private static final long serialVersionUID = 4865903039190150223L;
    @Id
    @GeneratedValue
    private long id;

    @Column(length = 50, nullable = false)
    private String firstName;

    @Column(length = 50, nullable = false)
    private String lastName;

    @OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
    private List<AddressEntity> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressEntity> getAddresses() {
        return addresses;
    }

    @Override
    public String toString() {
        return "UserEntity [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", addresses="
                + addresses + "]";
    }

    public void setAddresses(List<AddressEntity> addresses) {
        this.addresses = addresses;
    }

}
@Entity(name = "addresses")
public class AddressEntity implements Serializable {
    private static final long serialVersionUID = 3652691377296902875L;

    @Id
    @GeneratedValue
    private long id;

    @Column(length = 15, nullable = false)
    private String city;

    @Column(length = 15, nullable = false)
    private String country;

    @JsonIgnore
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "users_id")
    private UserEntity userDetails;

    public long getId() {
        return id;
    }

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

    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 UserEntity getUserDetails() {
        return userDetails;
    }

    public void setUserDetails(UserEntity userDetails) {
        this.userDetails = userDetails;
    }

    @Override
    public String toString() {
        return "AddressEntity [id=" + id + ", city=" + city + ", country=" + country + "]";
    }

}
public class UserDto implements Serializable {
    private static final long serialVersionUID = 6835192601898364280L;
    private long id;
    private String firstName;
    private String lastName;
    private List<AddressDTO> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressDTO> getAddresses() {
        return addresses;
    }

    public void setAddresses(List<AddressDTO> addresses) {
        this.addresses = addresses;
    }

}
public class AddressDTO {

    private long id;

    private String city;

    private String country;

    public long getId() {
        return id;
    }

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

    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;
    }

}
@RestController
public class UserController {

    @Autowired
    UserRepository repository;

    @PostMapping("map")
    @ResponseBody
    public UserEntity map(@RequestBody UserDto userDto) {
        ModelMapper modelMapper = new ModelMapper();
        UserEntity userEntity = modelMapper.map(userDto, UserEntity.class);
        for (AddressEntity address : userEntity.getAddresses()) {
            address.setUserDetails(userEntity);
        }
        repository.save(userEntity);
        return userEntity;
    }
}
UserController.java

@Entity
@Table(name = "users")
public class UserEntity implements Serializable {

    private static final long serialVersionUID = 4865903039190150223L;
    @Id
    @GeneratedValue
    private long id;

    @Column(length = 50, nullable = false)
    private String firstName;

    @Column(length = 50, nullable = false)
    private String lastName;

    @OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
    private List<AddressEntity> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressEntity> getAddresses() {
        return addresses;
    }

    @Override
    public String toString() {
        return "UserEntity [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", addresses="
                + addresses + "]";
    }

    public void setAddresses(List<AddressEntity> addresses) {
        this.addresses = addresses;
    }

}
@Entity(name = "addresses")
public class AddressEntity implements Serializable {
    private static final long serialVersionUID = 3652691377296902875L;

    @Id
    @GeneratedValue
    private long id;

    @Column(length = 15, nullable = false)
    private String city;

    @Column(length = 15, nullable = false)
    private String country;

    @JsonIgnore
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "users_id")
    private UserEntity userDetails;

    public long getId() {
        return id;
    }

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

    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 UserEntity getUserDetails() {
        return userDetails;
    }

    public void setUserDetails(UserEntity userDetails) {
        this.userDetails = userDetails;
    }

    @Override
    public String toString() {
        return "AddressEntity [id=" + id + ", city=" + city + ", country=" + country + "]";
    }

}
public class UserDto implements Serializable {
    private static final long serialVersionUID = 6835192601898364280L;
    private long id;
    private String firstName;
    private String lastName;
    private List<AddressDTO> addresses;

    public long getId() {
        return id;
    }

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

    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 List<AddressDTO> getAddresses() {
        return addresses;
    }

    public void setAddresses(List<AddressDTO> addresses) {
        this.addresses = addresses;
    }

}
public class AddressDTO {

    private long id;

    private String city;

    private String country;

    public long getId() {
        return id;
    }

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

    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;
    }

}
@RestController
public class UserController {

    @Autowired
    UserRepository repository;

    @PostMapping("map")
    @ResponseBody
    public UserEntity map(@RequestBody UserDto userDto) {
        ModelMapper modelMapper = new ModelMapper();
        UserEntity userEntity = modelMapper.map(userDto, UserEntity.class);
        for (AddressEntity address : userEntity.getAddresses()) {
            address.setUserDetails(userEntity);
        }
        repository.save(userEntity);
        return userEntity;
    }
}
样本请求:

{
"firstName" : "Sergey",
"lastName" : "Kargopolov",
"addresses":[
    {
        "city":"Vancouver",
        "country":"Canada"
    }
    ]
}
{
    "id": 7,
    "firstName": "Sergey",
    "lastName": "Kargopolov",
    "addresses": [
        {
            "id": 8,
            "city": "Vancouver",
            "country": "Canada"
        }
    ]
}
输出:

{
"firstName" : "Sergey",
"lastName" : "Kargopolov",
"addresses":[
    {
        "city":"Vancouver",
        "country":"Canada"
    }
    ]
}
{
    "id": 7,
    "firstName": "Sergey",
    "lastName": "Kargopolov",
    "addresses": [
        {
            "id": 8,
            "city": "Vancouver",
            "country": "Canada"
        }
    ]
}