我不得不使用特定的NLS_LANGUAGE访问数据库,并且不想更改user.locale以避免影响应用程序的其余部分。像这样的事情可以做或可以导致意想不到的问题?使用原生查询更改单个JPA查询
此外,会话的范围有多大?这是否会影响这个单一的查询,或每个调用使用相同的entityManager,甚至整个应用程序?
@Stateless
@Local
public class myDAOImpl implements MyDAO{
@PersistenceContext(unitName = "MyUnit")
protected EntityManager em;
public List<Object> getSomeData(){
em.createNativeQuery("alter session set nls_language = 'AMERICAN'").executeUpdate();
Query q = em.createNativeQuery("Select * from my_view");
return q.getResultList();
}
}
为什么你需要为一个查询使用不同的'nls_language'?也许这是可以在查询中解决的问题,例如使用'to_char'函数 –
如果nls_language未设置为'AMERICAN',则会在db上执行次优执行计划,导致它永远挂起。我听说过某些指标会被忽略。我知道疯狂的设计,但是我无法改变那里的任何东西。 –