代码之家  ›  专栏  ›  技术社区  ›  Eldad Mor

JPA本机查询中的位置参数问题

  •  6
  • Eldad Mor  · 技术社区  · 15 年前

    String sql = "SELECT email FROM users WHERE (type like 'B') AND (username like '?1')";
    List results = em.createNativeQuery(sql).setParameter(1, username).getResultList();
    

    但是我得到了IllegalArgumentException,它告诉我参数超出了界限。我做错什么了?

    2 回复  |  直到 15 年前
        1
  •  8
  •   Mark Byers    15 年前

    参数周围不应该有引号。请改为:

    String sql = "SELECT email FROM users WHERE (type like 'B') AND (username like ?1)";
    

    你可能还想再确认一下 type like 'B' 因为这可能不符合你的想法。

        2
  •  2
  •   Sean Patrick Floyd    15 年前


    b) 如果不使用通配符,为什么要使用like?使用 = 相反。

    String jpql =
      "SELECT u.email FROM users u WHERE (u.type = 'B') AND (u.username = '?1')";
    
    List results = 
        em.createQuery(jpql)
          .setParameter(1, username)
          .getResultList();