Spring Boot обрабатывает нулевой внешний ключ как нулевой - PullRequest
0 голосов
/ 13 июля 2020

Привет, у меня есть два класса Entity, аналогичные приведенным ниже

@Entity
@Data
public class User implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGen")
    @SequenceGenerator(name = "sequenceGen", sequenceName = "db.SEQ_IDGENERATOR", allocationSize = 1)
    @Column(name = "USER_ID")
    private Integer id;

   @JoinColumn(name = "ADDRESS_ID", referencedColumnName = "ADDRESS_ID")
    @ManyToOne(optional = true)
    private Address address;

    @Column(name = "USER_NAME")
    @UniqueField
    private String userName;
 
 }

@Entity
@Data
public class Address implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGen")
    @SequenceGenerator(name = "sequenceGen", sequenceName = "db.SEQ_IDGENERATOR", allocationSize = 1)
    @Column(name = "ADDRESS_ID")
    private Integer id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "address")
    private List<User> User;

    @Column(name = "CITY")
    private String city;
    @Column(name = "COUNTRY")
    private String country;
 
 }

И мои репозитории

@RepositoryRestResource
public interface UserRepository extends JpaRepository<User, Integer> {
}
@RepositoryRestResource
public interface AddressRepository extends JpaRepository<Address, Integer> {

}

Моя проблема в том, когда я пытаюсь получить всех пользователей в базе данных, которую я могу получить данные. Но если я установил для одного пользователя столбец address_id равным 0. У меня была такая ошибка

{"status":"NOT_FOUND","message":"Unable to find com.example.Address with id 0","errorCode":20,"subFields":null}

Итак, если поле id равно 0, я хочу обрабатывать его как null. Я знаю, что это не лучшая практика. Но у меня есть и другие причины для этого.

Я знаю, добавлю ли я @NotFound (action = NotFoundAction.IGNORE) в свою строку ManytoOne, это может решить мою проблему. Но у меня много таких объектов, поэтому мне нужно общее исправление.

...