9
Numaraları ve harfleri karışık olabilecek bazı bilet numaralarim var. Bu yönteme (kullanıcı girişi) ticketNumberIds
'dan geçeceğim ve Oracle veritabanına karşı sorgulamasını ve üst ve alt durumlara göre farklılık gösteren sorgu alma bileti almasını istiyorum.Büyük/küçük harf duyarlı Sorgu
Aşağıdakileri büyük/küçük harfe duyarlı olmayan bir sorguyu nasıl yaparım?
public List<TicketDO> getTicketDOsById(final List<String> ticketNumberIds) {
String myQuery = "from TicketDO t where t.ticketNumberId in (:ticketNumberIds)";
return getEntityManager().createQuery(myQuery).setParameter("ticketNumberIds", ticketNumberIds)
.getResultList();
}
Bu benim için çalışmıyor, bir Derby veritabanında çalışıyorum. Bunun bir çeşit lehçe uyuşmazlığı olabilir mi? –
Ben de Derby kullanıyorum ve gayet iyi çalışıyor. Detaylandırmaya özen gösterilsin mi? –
Bunun büyük olasılıkla DB'de Tablo Taramasını zorlayacağını unutmayın, böylece ticketNumberId üzerinde bir dizininiz varsa büyük olasılıkla kullanılmayacaktır. Bu sorunu önlemek için, varlık ayarlayıcınızdaki büyük harflere dönüştürebilirsiniz, böylece tüm bilet numaraları .persist() sırasında Büyük harf olarak saklanır. Ardından yukarıdaki kodda UPPER() işlevi kalmaz ve dolayısıyla bu sütundaki herhangi bir dizin kullanılabilir durumda kalır. – DTs