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环境:(
是你的生产数据库为空,你的开发人员不是?http://stackoverflow.com/q/4848776/139010 – 2013-03-02 17:58:01
因此,要求问题...为什么你使用SQL查询何时JPQL可能就足够了,并且是数据存储独立的? – DataNucleus 2013-03-02 17:58:17
@MattBall:不,它不是。 – dognose 2013-03-02 18:00:20