【问题标题】:What type of List i should take to Join (Inner) 2 tables from an another table我应该采取什么类型的列表来加入(内部)另一个表中的 2 个表
【发布时间】:2013-02-11 13:56:53
【问题描述】:

我有 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 |
+------+--------+------+------+-----------+

我想按以下顺序将 User 表与 Product 以及 o_id(来自 ORDER)进行内部连接:

+-----------+-------+------+------+--------------+
| username  | email | p_id | o_id | listed_price |
+-----------+-------+------+------+--------------+

我的 SQL 查询如下:

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();

【问题讨论】:

  • 您的查询风格存在很大的安全漏洞。永远不要使用这样的参数构建 SQL 字符串,谷歌“SQL 注入”并为自己节省很多痛苦,为你的雇主节省很多专业赔偿保险..

标签: java sql hibernate jakarta-ee


【解决方案1】:

它将返回List&lt;Object[]&gt;。 (对象数组列表),其中每个数组代表结果中的一行。并且值的索引基于您的 select 语句。

您在此处选择以下内容:

User.username, User.email, Orders.p_id, Orders.o_id, Product.listed_price

因此,您将在每个对象数组中获得 5 个元素。其中第一个元素是用户名,第二个元素是电子邮件,依此类推......

【讨论】:

  • 无法在 JSP 页面上获得输出。我在 JSP 页面中使用相同的列表来迭代 vales,但无法在 jsp 页面上获取数据。事实上,调试后没有任何错误。
  • @DevSingh 这可能是由于多个问题。如果不查看您的代码,很难猜出问题所在。
  • 请查看以下链接的代码 sn-ps。 stackoverflow.com/questions/15089460/…
【解决方案2】:

根据您的查询"SELECT User.username, User.email, Orders.p_id, Orders.o_id, Product.listed_price",它将返回List&lt;Object[]&gt;

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多