[英]Unable to get result after Inner Join 3 tables
I have declare a List<Object[]>
which returning list of object array, where each array represents a row in result. 我声明了一个
List<Object[]>
,它返回对象数组的列表,其中每个数组代表结果中的一行。 And index of values are based on your select statement. 值的索引基于您的select语句。
productList =
(List<Object[]>) session.createSQLQuery("
SELECT User.username, User.email, Orders.p_id, Orders.o_id, Product.listed_price " +
"FROM Orders " +
"INNER JOIN User ON User.u_id = Orders.u_id " +
"INNER JOIN Product ON Product.p_id = Orders.p_id " +
"WHERE Product.p_id = '"+p_id +"' " +
"ORDER BY User.username").list();
I have 3 tables User, Product and Orders . 我有3个表User,Product和Orders 。
USER:
-----+-----------+------------+---------+----------+-----------+
u_id | username | password | contact | email | city |
------+-----------+------------+---------+---------+-----------+
PRODUCT:
+------+----------+--------------+------+--------------+
| p_id | category | listed_price | qty | description |
+------+----------+--------------+------+--------------+
ORDERS:
+------+--------+------+------+-----------+
| o_id | date | u_id | p_Id | order_qty |
+------+--------+------+------+-----------+
I wants to Inner joins User table with Product along with o_id (from ORDER) in below order: 我想按以下顺序将内部表与产品以及o_id(来自ORDER)一起加入User表:
+-----------+-------+------+------+--------------+
| username | email | p_id | o_id | listed_price |
+-----------+-------+------+------+--------------+
In my ActionClass/View class i declare public List<Object[]> productList;
在我的ActionClass / View类中,我声明了
public List<Object[]> productList;
to access object list from controller class above. 从上面的控制器类访问对象列表。
public List<Object[]> productList;
public String listAllProduct(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
productList = orderDaoFactory.listProduct(Integer.parseInt( request.getParameter("p_id")));
System.out.println("\t"+productList.get(0).toString());
return SUCCESS;
}
In my JSP page i'm using this list (array of object) productList as an Iterator tag to iterate all customers who have ordered that product. 在我的JSP页面中,我使用此列表(对象数组)productList作为Iterator标记来迭代已订购该产品的所有客户。
<s:iterator value="productList">
<tr>
<td><h4><s:property value="username"/></h4></td>
<td><h4><s:property value="email"/></h4></td>
<td><h4><s:property value="p_id"/></h4></td>
<td><h4><s:property value="o_id"/></h4></td>
<td><h4><s:property value="listed_price"/></h4></td>
</tr>
</s:iterator>
Challenges/Issues: My problem is not to get output successfully even not getting any error after debugging. 挑战/问题:我的问题是即使调试后也没有出现任何错误,也无法成功获取输出。 Empty mind now thinking to use O/R mapping to associate Objects JOIN with others.
空洞的思想现在正在考虑使用O / R映射将Object JOIN与其他对象相关联。 Please suggest me where i am wrong.
请建议我我错了。 Your suggestions appreciable.
您的建议是可观的。
productList =
(List<Object[]>) session.createSQLQuery("
SELECT User, Orders, Product" +
"FROM User,Orders,Product " +
"INNER JOIN User ON User.u_id = Orders.u_id " +
"INNER JOIN Product ON Product.p_id = Orders.p_id " +
"WHERE Product.p_id = '"+p_id +"' " +
"ORDER BY User.username").list();
Then you will get three object. In first list you will get Object[0]=Users,Object[1]=Orders,Object[2]=Product. Now iterate it.
after edition 版后
productList =
(List<Object[]>) session.createQuery("
SELECT User, Orders, Product" +
"FROM User,Orders,Product " +
"INNER JOIN User ON User.u_id = Orders.u_id " +
"INNER JOIN Product ON Product.p_id = Orders.p_id " +
"WHERE Product.p_id = '"+p_id +"' " +
"ORDER BY User.username").list();
what is the problem with is syntax?? 语法有什么问题?
Use HQL instead of SQL if you want to query your objects directly. 如果要直接查询对象,请使用HQL而不是SQL。 Use
session.createQuery(String)
with the following query : 将
session.createQuery(String)
与以下查询一起使用:
SELECT u.username, u.email, o.p_id, o.o_id, p.listed_price FROM Orders as o
INNER JOIN User as u WITH u.u_id = o.u_id
INNER JOIN Product as p WITH p.p_id = o.p_id
WHERE p.p_id = ???
ORDER BY u.username
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.