Как исправить и / или оптимизировать эту реализацию метода запросов Spring jpa? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь реализовать метод запроса jpa из ключевого поля, определенного как JoinColumn для отношения ManyToOne.

Это часть приложения, которое я работаю, построено с Maven с использованием Spring 5 и JpaВерсии 2.1.

Ожидаемое поведение схемы: сущность "A" (первичный ключ = a_id) должна принадлежать сущности "B" (первичный ключ = b_id), где B может иметь более одной записи в A.С точки зрения базы данных, мне нужно хранить внешний ключ b_id в объекте A, но не наоборот.

class A  {

 @id
 Long a_id;

 @ManyToOne(optional = false)
 B b;
}

class B {

  @id
  Long b_id;

  @OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)
  @Transient
  private Set<Jobs> jobs;

}

// Могу ли я внести какие-либо исправления или упрощения в эту модель?

// Теперь я пытаюсь извлечь все записи A, которые имеют определенный b_id //, используя методы запроса

ARepository extends JpaRepository<A, Long> { 
    Optional<List<A>> findByB_id(Long B_id);
}

Это ошибка, которую я получаю при таком подходе:

Error: Unable to locate Attribute with the the given name [B_id] on this ManagedType [<package_path>.A]

1 Ответ

0 голосов
/ 07 февраля 2019

mappedBy ссылается на обратную связь, которая в вашем примере b не b_id.

Так что измените

@OneToMany(mappedBy = "b_id", cascade = CascadeType.ALL)

на

@OneToMany(mappedBy = "b", cascade = CascadeType.ALL)
...