Java JPA Left Join, которые не разделяются запятой - PullRequest
0 голосов
/ 20 января 2019

Ошибка при переводе структуры MYSQL в структуру JPA

У меня 100% обработанный запрос mysql:

SELECT DISTINCT * FROM list_orders LEFT JOIN orders_translate где list_orders._id = orders_translate._order_id

query JPA String query = "SELECT t1 ИЗ ListOrders t1 ВЕРНУТЬСЯ t1.speakers e ГДЕ e._id = t1._id";

public class OrdersTranslate implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "_id")
private Long id;
@Size(max = 50)
@Column(name = "_english_name")
private String englishName;
@Size(max = 50)
@Column(name = "_arabic_name")
private String arabicName;
@Size(max = 50)
@Column(name = "_russian_name")
private String russianName;
@Size(max = 50)
@Column(name = "_french_name")
private String frenchName;
@Basic(optional = false)
@NotNull
@Column(name = "_order_id")
private int order_id;

}

Открытый класс ListOrders реализует Сериализуемый {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "_id")
@SerializedName("_id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "_number_id")
@SerializedName("_number_id")
private int numberId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "name")
@SerializedName("name")
private String name;
@OneToOne(cascade = CascadeType.ALL)
private List<OrdersTranslate> speakers;

}

Я получаю следующую ошибку:

[53, 54] Предложение FROM имеет «ListOrders t1 СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ t1.oerders'и' е ', которые не разделяются запятой.[42, 53] Идентификационная переменная 't1.oerders' не соответствует правилам для идентификатора Java.[56, 56] Идентификационная переменная должна быть указана для объявления переменной диапазона.

Что не так в запросе JPA?MySQL запрос работает правильно!

1 Ответ

0 голосов
/ 20 января 2019

Сначала - у вас нет соединения OneToOne, если у вас есть массив OrdersTranslate в таблице ListOrders.Это соединение OneToMany.

Попробуйте в своем классе ListOrders:

@OneToMany(mappedBy="listOrders")
private List<OrdersTranslate> speakers;

В своем классе OrdersTranslate:

@ManyToOne
@JoinColumn(name = "_order_id")
private ListOrders listOrders;

И тогда ваш JPA-запрос будет выглядеть так:

SELECT t1 FROM ListOrders t1 LEFT JOIN t1.speakers e
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...