Я изо всех сил пытаюсь сделать запрос, чтобы внутренне объединить 3 таблицы и иметь предложение where. Это как мое, где не существует.
Вот мои сущности:
CarModel
сущность:
@Entity
@Table(name = "CARMODEL")
public class CarModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(mappedBy = "carModel")
private List<MyCars> myCars;
MyCars
сущность
@Entity
@Table(name = "MYCARS")
public class MyCars implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne
@JoinColumn(name = "CarModel_id")
private CarModel carModel= new CarModel();
@ManyToOne
@JoinColumn(name = "user_id")
private User user = new User();
Пользовательская сущность:
@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(mappedBy = "user")
private List<MyCars> myCars;
Вот графическое представление этих трех сущностей:

А вот один из запросов, которые я пробовал :
public List<CarModel> findMyCarsByUserId(long IdUser)
{
String requete = "SELECT DISTINCT cm\n" +
"FROM MyCars ms\n" +
" INNER JOIN CarModel cm INNER JOIN User u where u.id=2";
Query query = em.createQuery(requete);
//query.setParameter("iduser", IdUser);
List<CarModel> cars = null;
cars = (List<CarModel>) query.getResultList();
return cars;
}
Итак, здесь я пытаюсь получить все ModeleVehicule
для данного user_id
. Но у меня есть все ModeleVehicule
таблицы, несмотря на предложение where.
У меня mysql запрос, работающий на то, что я хочу:
SELECT cm.marque,cm.modele, cm.motorisation, cm.anneeModele, cm.puissance
FROM carmodel cm
INNER JOIN mycars ms ON cm.ID = ms.ModeleVehicule_id
INNER JOIN user u ON ms.user_id = u.ID
WHERE ms.user_id = 1
Что я делаю неправильно?