【问题标题】:How I get a @NamedQuery Query with WERE Command in Java EE?如何在 Java EE 中使用 WERE 命令获取 @NamedQuery 查询?
【发布时间】:2015-06-30 20:11:01
【问题描述】:

嗨,我有一个 java ee 应用程序,我想创建一个查询以从用户那里获取所有票证。

我有一个 Ticket 类、TicketDAO 接口和 TicketBean 类 我有一个 User 类、UserDAO 接口和 UserBean 类

这是我的用户类:

  @Entity
    @NamedQueries({
        @NamedQuery(name=User.QUERY_GETALL,query="SELECT c FROM User c"),
        @NamedQuery(name=User.QUERY_GETALLTICKETS,query="SELECT c FROM Ticket c ...????"),
    })
    public class User implements Serializable{

        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        public static final String QUERY_GETALL = "User.GetAll";

        public static final String QUERY_GETALLTICKETS = "User.GetAllTickets";
...

这是我的 UserBean 类:

@Override
public List<Ticket> getAllUserTickets() {

    return em.createNamedQuery(User.QUERY_GETALLTICKETS,Ticket.class).getResultList();
}

My Ticket Table 有列用户名。

【问题讨论】:

    标签: java mysql sql jakarta-ee javabeans


    【解决方案1】:

    将 QUERY_GETALLTICKETS 从 User 类移动到 Ticket 类;那么你可以这样写:

    @NamedQuery(name=Ticket.QUERY_GETALLTICKETS,query="SELECT t FROM Ticket t where t.userName = :" + P_USER)

    将 P_USER 声明为:

    public final static String P_USER = "pUser";

    那么你可以这样使用查询:

    @覆盖 public List getAllUserTickets(String username) {

    查询查询 = em.createNamedQuery(Ticket.QUERY_GETALLTICKETS,Ticket.class); query.setParameter(Ticket.P_USER, username);

    return query.getResultList(); }

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 2014-11-27
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多