2013-03-02 53 views
0

爲了開發的目的,我使用的是Windows環境(Eclipse/Jboss) 我有一個userDAO,它提供了通過名字和姓氏來緩存UserEntity的方法。此查詢在開發環境中運行良好。但是在Unix環境下,我得到一個異常。JPA區別Windows/Unix系統?

詳細情況: REST服務是beeing調用,包含許多數據,以及名和姓。這個參數需要用來獲得真正的用戶實體。 (它未能在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); 
    } 
... 
} 

的使用者資料的外觀(剝離)是這樣的:

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包含如表名:在MySQL的

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

列名是大寫的,所以一切似乎權。

這個工作在Windows環境中,而不是在UNIX環境:(

+1

是你的生產數據庫爲空,你的開發人員不是?http://stackoverflow.com/q/4848776/139010 – 2013-03-02 17:58:01

+3

因此,要求問題...爲什麼你使用SQL查詢何時JPQL可能就足夠了,並且是數據存儲獨立的? – DataNucleus 2013-03-02 17:58:17

+0

@MattBall:不,它不是。 – dognose 2013-03-02 18:00:20

回答

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

和它的作品......奇怪的事情 - 這可能是對這一問題的Windows和UNIX之間的差值(?例外記錄絕對沒有空白)