Seu la seguente mappaturainterrogazione Hibernate HQL utilizzando come operatore
@Entity
public class User {
private Integer id;
@Id;
private Integer getId() {
return this.id;
}
}
Avviso id è un numero intero. Ora ho bisogno di questa query HQL utilizzando come operatore
Query query = sessionFactory.getCurrentSession().createQuery("from User u where u.id like :userId");
ATT: E 'come operatore NOT = (uguale operatore)
allora io uso
List<User> userList = query.setParameter("userId", userId + "%").list();
Ma non lo fa lavoro perché Hibernate si lamenta IllegalArgumentException si è verificato chiamando getter di User.id
Anche quando uso
query.setString("userId", userId + "%");
non funziona
Cosa devo usare per passare la query?
Cosa motore di database che si sta utilizzando? –
@Arthur - non rispondere alla tua domanda (sembra che tu l'abbia capito da solo in ogni caso) ma devo solo chiedere - perché? Sono sinceramente interessato - quale caso d'uso hai che richiede il confronto LIKE per quella che sembra essere una chiave surrogata? – ChssPly76
@ ChssPly76 - Ciao Chss. È un sistema legacy. È una struttura ad albero in cui un id del gruppo principale corrisponde a tutti gli id dei bambini. Ad esempio, se ho un id di gruppo = 22100 e voglio recuperare i suoi figli, facendo corrispondere il prefisso 221, uso >>> come "221%". –