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 data = new 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 に答える