Ø P.S.: Ačkoliv to není z mého dotazu zřejmé, mid je v databázi reprezentovaný
jako NVARCHAR, proto ty apostrofy kolem hodnoty.
V kódu byste se o apostrofy neměl starat vůbec.
Nenapsal jste, jakého typu a jakým způsobem plníte "query". Je zapotřebí vždy s
dotazem posílat celou relevantní část kódu…..
Předjímám, že to konstruujete nějak takto: String query = "select …. WHERE mid
= '" + aValue + "';";
Pokud ano, pak si nastudujte pojem "SQL injection".
(Nápověda: Když v "aValue" bude obsah políčka formuláře které plní uživatel, co
se stane, když tam vtipálek napíše: 123';DROP TABLE pfa_audit'
Správné řešení je (zhruba):
String sql = "select …. WHERE mid = ?";
PreparedStatement stm = connection. prepareStatement(sql);
stm.setLong(1 /*sloupce od 1 :-/ */, aValue);
> StringBuffer queryS = new StringBuffer();
queryS.append("select a from pfa_audit a where a.mid = :value ");
Query query = entityManager.createQuery(queryS.toString());
query.setParameter("value", valueint);
return query.getResultList();
Ø Mozem sa opatrne opytat, k comu je ten StringBuffer?
V tomto kódu samozřejmě k ničemu. Možná to někdo vykopíroval z existujícího
kódu a necitlivě to pokrátil.
Dále tam v odpovědi ani nebylo zmíněno, že se jedná o Hibernate, natož aby tam
byl odkaz aspoň na dokumentaci nebo tutoriál.
Pokud ale původní tazatel evidentně použil JDBC, pak takováto odpověď je IMHO
mimo mísu.
Michal Polák