У меня есть внутренний запрос соединения mysql, который объединяет 3 таблицы в базе данных и который приводит к требуемому набору результатов. Теперь я хочу написать соответствующий запрос на спящий режим, используя session.createQuery(). Я создал класс модели для этих 3 таблиц в моем проекте. Нет сопоставления, связанного с 3 таблицами. Запрос mysql приведен ниже.Как написать внутреннее соединение в hibernate с помощью createQuery()
select b.ID, b.Date, d.Name, IF(c.Amount < 0, c.Amount * -1, c.Amount) Amount, IF(c.Amount < 0, "Payment", "Receipt") Type from (select TransactionID from TransactionDetail where AccountID = 56) a inner join TransactionHeader b on a.TransactionID = b.ID inner join TransactionDetail c on a.TransactionID = c.TransactionID inner join Account d on c.AccountID = d.ID where c.AccountID <> 56;
Теперь, пожалуйста, скажите мне, как написать этот запрос, используя спящий режим session.createQuery()? Пожалуйста, помогите me.Below является модель класса для 3-х таблиц
Accounts.java:
@Entity
@Table(name = "Account")
public class Accounts {
@Id
@GeneratedValue
@Column(name="ID")
private Integer id;
@Column(name="Name")
private String name;
public Accounts() {
super();
// TODO Auto-generated constructor stub
}
public Accounts(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
TransactionDetails.java:
@Entity
@Table(name = "TransactionDetail")
public class TransactionDetails {
@Id
@GeneratedValue
@Column(name="ID")
private Integer id;
@Column(name="TransactionID")
private Integer transactionID;
@Column(name="AccountID")
private Integer accountID;
@Column(name="Amount")
private Float amount;
public TransactionDetails() {
super();
// TODO Auto-generated constructor stub
}
public TransactionDetails(Integer id, Integer transactionID,
Integer accountID, Float amount) {
super();
this.id = id;
this.transactionID = transactionID;
this.accountID = accountID;
this.amount = amount;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getTransactionID() {
return transactionID;
}
public void setTransactionID(Integer transactionID) {
this.transactionID = transactionID;
}
public Integer getAccountID() {
return accountID;
}
public void setAccountID(Integer accountID) {
this.accountID = accountID;
}
public Float getAmount() {
return amount;
}
public void setAmount(Float amount) {
this.amount = amount;
}
}
TransactionHeaders.java:
@Entity
@Table(name = "TransactionHeader")
public class TransactionHeaders {
@Id
@GeneratedValue
@Column(name="ID")
private Integer id;
@Column(name="Date")
private Timestamp date;
public TransactionHeaders() {
super();
// TODO Auto-generated constructor stub
}
public TransactionHeaders(Integer id,Timestamp date) {
super();
this.id = id;
this.date = date;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Timestamp getDate() {
return date;
}
public void setDate(Timestamp date) {
this.date = date;
}
}
Возможно, вы захотите сначала предоставить некоторую информацию о вашем сущности. – Thomas
Я обновил вопрос с помощью класса модели – KJEjava48