Почему Spring Boot findById возвращает ноль, а findByIdAndStatus возвращает запись? - PullRequest
2 голосов
/ 10 марта 2020

Spring boot 2.2.2 ~ 2.2.4 (тот, который я тестировал до сих пор)

У меня есть абстрактный класс

@MappedSuperclass
@Data
@EntityListeners(AuditingEntityListener.class)
@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "int")})
@Filter(name = "tenantFilter", condition = "tenantId = :tenantId")
public abstract class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    ....
}

Класс персонала, расширяющий абстрактный класс

@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = "personnel")
@AllArgsConstructor
@NoArgsConstructor
@Data
@EntityListeners(AuditingEntityListener.class)
public class Personnel extends BaseEntity {

    @NotNull
    @OneToOne
    @JoinColumn(name = "titleID")
    private Title title;

    // other fields and relationships of type ManyToOne, OneToMany
}

Мой класс репозитория Jpa

public interface PersonnelRepository extends JpaRepository<Personnel, Integer> {
    Optional<PersonnelData> findByFileNo(String fileNo);
    Optional<PersonnelData> findByIdAndDeletedOnIsNull(Integer id);
}

В моей базе данных есть записи персонала с некоторыми полями, равными нулю, и связями.

В моем контроллере, когда я do findById(1), он возвращает ноль, но когда я делаю findByIdAndDeletedOnIsNull(1), он возвращает запись.

Я пытался @NotFound(action = NotFoundAction.IGNORE) для отношений, которые null без успеха.

...