我不得不使用特定的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上執行次優執行計劃,導致它永遠掛起。我聽說過某些指標會被忽略。我知道瘋狂的設計,但是我無法改變那裏的任何東西。 –