jakarta-ee - 将两个参数传递给命名查询

标签 jakarta-ee jpa ejbql

我的实体“Intervention”有以下命名查询:

 @NamedQuery(name = "Intervention.findNextMission", query = " SELECT i FROM Intervention  i       WHERE i.heureDebut> :DateToBeSpecified and i.idAgent= :idAgent")`

我不知道如何通过传递两个参数在我的代码中调用此查询:date、id。通常它应该是这样的:

List <Intervention> ListOfInterventions = em.createNamedQuery("Intervention.findNextMission").setParameter().getResultList();

在 setParameter() 的括号之间放什么??

这里遵循我的实体干预的代码:

    @Entity
@Table(name = "intervention")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Intervention.findAll", query = "SELECT i FROM Intervention i"),
    @NamedQuery(name = "Intervention.findByIdIntervention", query = "SELECT i FROM Intervention i WHERE i.idIntervention = :idIntervention"),
    @NamedQuery(name = "Intervention.findByHeureDebut", query = "SELECT i FROM Intervention i WHERE i.heureDebut = :heureDebut"),
    @NamedQuery(name = "Intervention.findByHeureFin", query = "SELECT i FROM Intervention i WHERE i.heureFin = :heureFin"),
    @NamedQuery(name = "Intervention.findNextMission", query = " SELECT i FROM Intervention i WHERE i.heureDebut> :DateToBeSpecified and i.idAgent= :idAgent")})
public class Intervention implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "IdIntervention", nullable = false, length = 50)
    private String idIntervention;
    @Basic(optional = false)
    @NotNull
    @Column(name = "HeureDebut", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureDebut;
    @Basic(optional = false)
    @NotNull
    @Column(name = "HeureFin", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date heureFin;
    @Lob
    @Size(max = 65535)
    @Column(name = "NotesGeneral", length = 65535)
    private String notesGeneral;
    @JoinColumn(name = "IdValidation", referencedColumnName = "IdValidation", nullable = false)
    @ManyToOne(optional = false)
    private Tablevalidation idValidation;
    @JoinColumn(name = "IdNatureIntervention", referencedColumnName =  "IdNatureIntervention", nullable = false)
    @ManyToOne(optional = false)
    private Tablenatureintervention idNatureIntervention;
    @JoinColumn(name = "IdAgent", referencedColumnName = "IdAgent", nullable = false)
    @ManyToOne(optional = false)
    private Agent idAgent;
    @JoinColumn(name = "RefContrat", referencedColumnName = "RefContrat", nullable = false)
    @ManyToOne(optional = false)
    private Projet refContrat;

    public Intervention() {
    }
    //getters and setters 
}

最佳答案

setParameter 接受(int position,Object value)(String parameterName,Object value)。所以你的代码看起来像:

Date aDate=....
Long anId=....   
List ListOfInterventions = em.createNamedQuery("Intervention.findNextMission")
  .setParameter("DateToBeSpecified",aDate,avax.persistence.TemporalType,DATE)
  .setParameter("idAgent",anId).getResultList();

请注意,当您使用Date 时,您应该指定预期的TemporalType

关于jakarta-ee - 将两个参数传递给命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035984/

相关文章:

mysql - @GeneratedValue 不起作用。 "java.sql.SQLException: Field ' ID'没有默认值”

java - 单击电子邮件激活链接时如何登录用户?(JSF 2.0)

java - Atomikos vs JOTM vs Bitronix vs?

java - 通过entityManager.refresh刷新实体集合(getResultList)

java - 为什么我需要在其中添加交易?

java - 如何在具有两个相同日期的查询之间使用 EJBQL?

java - 如何将数据库服务器的更新反射(reflect)到网站和Android应用程序(即时)?

java - 实体映射正在动态创建不需要的列

java - EJB-QL问题我如何将列表设置为参数,例如: select o from table where id in (List<Long> listOfIds)