Я застрял в простой схеме друзей. У меня есть объект "Пользователь", у которого есть список друзей в качестве друзей. Spring создает для меня tbl_friends, который будет хранить данные соединения, например, я установил пользователя 1 как друзей user3 и user4. Когда я выбираю user1, он получает user3 и user4 как друзей. Это работает нормально, но я хочу, чтобы когда я получил user3, он сохраняет информацию о том, что он дружит с user1.
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String userName;
private String fullName;
private String phoneNumber;
private String email;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name="TBL_FRIENDS",
joinColumns=@JoinColumn(name="person_id"),
inverseJoinColumns=@JoinColumn(name="friend_id")
)
private List<User> friends;
@JsonIgnore
@ManyToMany(mappedBy = "friends")
private List<User> friendOf;
В обычном запросе SQL все, что я хотел бы сделать, чтобы получить список друзей пользователя user3 будет:
SELECT user.id, user.full_name, FROM user INNER JOIN tbl_friends f ON user.id = f.person_id WHERE f.friend_id = 3 ; // (this code actually works on h2-console to check the tables created by spring jpa)
Когда я пытаюсь сделать что-то подобное в UserRepository, он выдает ошибку, потому что ожидает путь (?)
@Query("SELECT u FROM User u INNER JOIN tbl_friends f ON User.id = f.personId WHERE f.friendId = :objId")
List<User> findByFriendsId(@Param("objId") Integer friend_id);```
**This the error: **
```2020-05-04 18:39:55.660 INFO 22292 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-05-04 18:39:55.666 INFO 22292 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-05-04 18:39:55.694 WARN 22292 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : Unable to start LiveReload server
2020-05-04 18:39:55.995 ERROR 22292 --- [ restartedMain] o.h.hql.internal.ast.ErrorTracker : Path expected for join!
2020-05-04 18:39:56.000 ERROR 22292 --- [ restartedMain] o.h.hql.internal.ast.ErrorTracker : Path expected for join!
antlr.SemanticException: Path expected for join!```