У меня есть эта таблица, из которой я хотел бы выбрать много строк и использовать JOIN для перевода id в имя из двух таблиц. Я пробовал это:
Основной стол:
@Entity
@Table(name = "payment_transactions")
public class PaymentTransactions implements Serializable {
.....
@Column(length = 4)
private Integer merchant_id;
@Column(length = 4)
private Integer terminal_id;
......
}
Таблица с дополнительными данными:
@Entity
@Table(name = "merchants")
public class Merchants implements Serializable {
@Column(name = "id")
private int id;
@Column(length = 255)
private String name;
.........
}
@Entity
@Table(name = "terminals")
public class Terminals implements Serializable {
@Column(name = "id")
private int id;
@Column(length = 255)
private String name;
.........
}
Я пробовал это:
String hql = "select e.* from " + PaymentTransactions.class.getName() + " e "
+ " INNER JOIN " + Merchants.class.getName() + " m "
+ " ON e.id = m.merchant_id AND "
+ " INNER JOIN " + Terminals.class.getName() + " t "
+ " ON e.id = t.terminal_id "
+ " where e.created_at >= :start_date and e.created_at <= :end_date";
Общая идея заключается в том, что я хочу иметь одну основную таблицу Payment transactions
, в которой merchant_id
и terminal_id
хранятся в виде чисел. С помощью join я хочу получить название Merchant и Terminal. Как правильно реализовать это?