В моем проекте весенних данных есть объект, который выглядит так:

public class Employee {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="id")
    private Integer id;

    @Column(name="category")
    private Category category;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="element_id")
    private Department department;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="agency_id")
    private Agency agency;

    public Employee() {}

    // routine getters and setters
}

В моем EmployeeRepository я обнаружил, что могу получить метод findEmployeeById (), который, кажется, работает точно так же, как обычный findById () (но я не уверен). Может кто-нибудь объяснить разницу между этими двумя методами?

Optional<Employee> findEmployeeById (Integer id);

Против

Optional<Employee> findById (Integer id);

Я «обнаружил» это случайно с помощью автозаполнения на моей стороне (IntelliJ).

1
Bill T 8 Дек 2020 в 22:14

1 ответ

Лучший ответ

Разница в том, что, хотя findEmployeeById() выполняет поиск - как он утверждает - сотрудник по своему полю с именем id, findById выполняет поиск по полю с аннотациями как @Id без учета имени поля идентификатора объекта.

В вашем случае - как и во многих других - дело в том, что поле @Id имеет имя id, поэтому результат тот же.

0
pirho 8 Дек 2020 в 20:27