当前位置: 首页 > 知识库问答 >
问题:

JPA:通过插入外部值查找结果

满耀
2023-03-14

这是我的数据库

   CREATE TABLE Orders (
        OrderID int NOT NULL,
        OrderNumber int NOT NULL,
        products_id int,
        PRIMARY KEY (OrderID),
        FOREIGN KEY (products_id) REFERENCES product(products_id)
    );

我生成了 NetBeans 实体类,它给出了以下代码;****

package Entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name = "orders")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Orders.findAll", query = "SELECT o FROM Orders o")
    , @NamedQuery(name = "Orders.findByOrderID", query = "SELECT o FROM Orders o WHERE o.orderID = :orderID")
    , @NamedQuery(name = "Orders.findByOrderNumber", query = "SELECT o FROM Orders o WHERE o.orderNumber = :orderNumber")})
public class Orders implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "OrderID")
    private Integer orderID;
    @Basic(optional = false)
    @Column(name = "OrderNumber")
    private int orderNumber;

    public Orders() {
    }

    public Orders(Integer orderID) {
        this.orderID = orderID;
    }

    public Orders(Integer orderID, int orderNumber) {
        this.orderID = orderID;
        this.orderNumber = orderNumber;
    }

    public Integer getOrderID() {
        return orderID;
    }

    public void setOrderID(Integer orderID) {
        this.orderID = orderID;
    }

    public int getOrderNumber() {
        return orderNumber;
    }

    public void setOrderNumber(int orderNumber) {
        this.orderNumber = orderNumber;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (orderID != null ? orderID.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        if (!(object instanceof Orders)) {
            return false;
        }
        Orders other = (Orders) object;
        if ((this.orderID == null && other.orderID != null) || (this.orderID != null && !this.orderID.equals(other.orderID))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entity.Orders[ orderID=" + orderID + " ]";
    }

}

我是JPA的新手,我只想通过输入“products_id”来获得“订单号”,这是可能的吗?** 我想要这样的东西**

public Orders findOrderNumber(int productsId) {
        EntityManager em = getEntityManager();
        Orders order= null;
        try {
         order= (Orders) em.createQuery("SELECT o FROM Orders o WHERE o.productsId=" + productsId).getSingleResult();


        } catch (NoResultException e) {
            order= null;
        }

        return order;
    }

共有2个答案

柯锋
2023-03-14

您应该使用准备好的语句。

如何在JPA中使用预准备语句

现在,您的查询容易受到 SQL 注入的攻击:https://www.owasp.org/index.php/SQL_Injection

到底是什么现在不起作用了?

云利
2023-03-14

尝试以下代码:

// Retrieve operation using the JPA Entity Manager
order = em.find(Orders.class,productsId);

// get the orderNumber from an instance of Entity Orders
int orderNumber = order.getOrderNumber();
 类似资料:
  • 下面的代码仅供演示。 我的实体bean如下所示 问题:假设在查询时,我只有employeeId和branchName,而我不想在departmentName上放置filter 在这种情况下,如何编写存储库方法 JPA是否有针对此类场景的内置内容?

  • 问题内容: 我想编写一个Spring Data JPA存储库接口方法签名,该签名使我可以在该实体中找到具有嵌入式对象属性的实体。有人知道这是否可行吗? 这是我的代码: 我可以使用Spring Data为此编写查询吗? 问题答案: 此方法名称应能解决问题: 有关参考文档的查询派生的部分中的更多信息。

  • 问题内容: 我有两个域,是一对多关系中的一部分。我想知道如何查询孩​​子的父母FK吗?贝娄是父母/孩子的伪代码 上级: 儿童: 尽管我没有明确创建FK,但是grails会自行创建MySQL数据库。但是,当我想像这样通过FK查询孩子时: 我收到一个错误:找不到类[class mgr.AlumLanguage]的名称[alumProfileId]的属性 关于如何做到这一点的任何建议? 谢谢杰森 问题答

  • 在我的遗留应用程序中,我有一个国家表、状态表和一个国家和州的映射表,几乎没有额外的列。 我创建了这样一个实体类。 我的仓库。 我想检查映射表中是否存在状态。以下两种方法都不起作用。 正确的方法是什么?

  • 我正在用Java开发一个使用JPA的路线规划系统。我需要创建一个findBy方法,通过包含它的城市列表来查找路线。以下是课程: 现在我尝试了,但并不惊讶它不起作用,如下所示: 有没有一种简单的方法可以使用JPA,或者我必须编写一个困难的自己的@Query并以某种方式迭代,才能通过集合找到一个实体?