0

出于开发目的,我使用的是 Windows 环境(Eclipse / Jboss) 我有一个 userDAO,它提供了通过名字和姓氏检索 UserEntity 的方法。此查询在开发环境中运行良好。但是在 Unix 环境中,我得到一个javax.persistence.NoResultException: No entity found for query异常。

详细情况:正在调用一个 REST 服务,其中包含许多数据以及名字和姓氏。需要使用此参数来获取实际的 userEntity。(对于 Unix 上的任何用户,它都失败了。)

所以,其余的服务正在这样做:

@Consumes("application/json")
@Produces("application/json")
public String create(String plaindata) {

JSONObject 数据 = 新 JSONObject(plaindata);

String ownerFirstname = data.getString("userFirstname"); //Yes userX, not ownerX

String ownerLastname = data.getString("userLastname");

UserEntity owner = null;
    try {
        owner = userDataService.getUserDetailsByName(ownerFirstname, ownerLastname);
    } catch (Exception e) {
        throw new Exception("Found zero possible users for the given name '" + ownerFirstname + " " + ownerLastname
                + "'. Cannot invoke process.", e);
    }
...
}

userDataService 看起来(剥离)如下:

private static String GET_USER_BY_FIRSTNAME_LASTNAME_QUERY = "SELECT * FROM " + DBConstants.USER_TABLE_NAME 
        + " user WHERE user.FIRST_NAME = :firstnameValue AND user.LAST_NAME = :lastnameValue";

public UserEntity getUserDetailsByName(String firstname, String lastname) {
    Query query = em.createNativeQuery(GET_USER_BY_FIRSTNAME_LASTNAME_QUERY, UserEntity.class);

    query.setParameter("firstnameValue", firstname);
    query.setParameter("lastnameValue", lastname);

    UserEntity u =  (UserEntity) query.getSingleResult();
    return u;
}

DBConstants 包含表名,如:

public static final String DATATABLE_PREFIX = "pre_";
public static final String USER_TABLE_NAME = DATATABLE_PREFIX+"user_entity";

mySQL 中的列名是大写的,所以一切看起来都是正确的。

这适用于 Windows 环境,但不适用于 Unix 环境:(

4

1 回答 1

0
String ownerFirstname = data.getString("userFirstname").trim(); 
String ownerLastname = data.getString("userLastname").trim();

它有效......奇怪的事情 - windows 和 unix 在这个问题上可能有什么区别?(异常记录绝对没有空格)

于 2013-03-02T18:21:45.397 回答