У меня есть 2 таблицы базы данных Клиент и Элементы с отношением 1 -> много. Для получения данных из базы данных я использую следующий запрос.
выберите customer.id, customer.name, items.itemName, items.itemPrice из testdb.customer. ВНУТРЕННИЕ СОЕДИНЕНИЯ
У меня есть сущность класса Customers
@Entity
public class Customer{
@Id
private int id;
@Column
private String name;
@Column
private String itemName;
@Column
private int itemPrice;
public Customer() {}
//Getter and setter are here
.......
}
в классе обслуживания у меня следующий код.
@GET @Path("/getCustomerInfo")
@Produces(MediaType.APPLICATION_JSON)
public List getCustomerInfo() {
CustomerDao dao = new CustomerDao();
return dao.getBuildingsCustomerInfo();
}
в моем классе DAO у меня есть следующий код
public List<Customer> getCustomerInfo(){
Session session = SessionUtil.getSession();
String queryString = "the above mentioned query";
List<Customer> customerInfo = session.createNativeQuery(queryString, Customer.class) ;
session.close();
return customerInfo;
}
Я получаю следующий ответ JSON от службы
[id:1, name:"Alfred", itemName:"jeans", itemprice:10],[id:1, name:"Alfred", itemName:"jeans", itemprice:10],[id:2, name:"James", itemName:"watch", itemPrice:20 ],[id:2, name:"James", itemName:"watch", itemPrice:20 ], [id:2, name:"James", itemName:"watch", itemPrice:20 ]
Количество результатов равно 5, что является правильным, но 2-й результат - это копия 1-го, 4-го и 5-го - копии 3-го. Во 2-м, 4-м и 5-м результатах itemName и itemPrice должны быть разными.
если я использую createSQLQuery(queryString);
вместо createNativeQuery(queryString, Customer.class);
, я получаю правильный результат, но без имен атрибутов сущностей.
[1, "Alfred", "jeans", 10],[1, "Alfred", "shirt", 15],[2, "James", "watch", 20], [2, "James", "coffee", 25], [2, "James", "drinks", 30]
Я видел несколько статей, но не смог найти решение. Я должен использовать createNativeQuery (), а не createSQLQuery (), потому что мне нужно сопоставить атрибуты класса сущности. Пожалуйста, дайте мне знать, если я делаю что-то не так.