代码之家  ›  专栏  ›  技术社区  ›  hsz

JPA查询异常

  •  2
  • hsz  · 技术社区  · 14 年前

    我有个疑问 EntityManager :

    Query q = em
        .createQuery("SELECT * FROM :table WHERE username = :username AND password = MD5(:password)")
        .setParameter("table", User.class.getName())
        .setParameter("username", txtLogin.getText())
        .setParameter("password", passPassword.getPassword())
    ;
    
    User user = (User) q.getSingleResult();
    

    但我有一个例外:

    线程“awt-eventqueue-0”中出现异常 java.lang.illegalargumentException:一个 创建时发生异常 EntityManager中的查询:
    例外 描述:语法错误分析 查询[选择*从:表中 username=:用户名和密码= MD5(:password)],第1行,第7列: 意外的标记[*]。

    如何修复?

    不可能用吗 * 在查询中?

    2 回复  |  直到 14 年前
        1
  •  7
  •   Sean Patrick Floyd    14 年前

    Select T from Thingy T
    

    Select * from Thingy
    

    SELECT t FROM :table t from where

    Query q = em
        .createQuery("SELECT u FROM " + User.class.getName()
        + "u WHERE username = :username AND password = MD5(:password)")
        .setParameter("username", txtLogin.getText())
        .setParameter("password", passPassword.getPassword())
        ;
    

    MD5()

        2
  •  0
  •   Shervin Asgari    14 年前

    *

     Query q = em
        .createQuery("FROM " + User.class.getName() + " WHERE username = :username AND password = MD5(:password)")
        .setParameter("username", txtLogin.getText())
        .setParameter("password", passPassword.getPassword())
        ;
    
    User user = (User) q.getSingleResult();
    

    Query q = em
        .createQuery("SELECT us FROM " + User.class.getName() + "us WHERE username = :username AND password = MD5(:password)")
        .setParameter("username", txtLogin.getText())
        .setParameter("password", passPassword.getPassword())
        ;