2012-01-18 14 views
6

Sto utilizzando Hibernate per alcuni anni ma non sono sicuro dell'utilizzo di Query e Criteria.Hibernate e come evitare il cambio di nome delle modals

Ho capito che uno dei punti di forza di Hibernate consiste nel controllare il nome del campo in un unico punto. Se ho il seguente codice:

List cats = sess.createCriteria(Cat.class) 
.add(Restrictions.like("name", "Fritz%")) 
.add(Restrictions.between("weight", minWeight, maxWeight)) 
.list(); 

Cosa succede se cambio "nome" del gatto nell'oggetto Java?

Anche quando si utilizza la sostituzione refactor (come in Elipse) non rileverà l'elemento come qualcosa che deve essere cambiato!

Se sì, come si gestiscono i nomi dei campi in Java?

+1

Test di unità. Non riesco a pensare ad alcun altro meccanismo. – Adi

risposta

3

Credo che le query di tipo sicuro non siano supportate in api specifiche di Hibernate. JPA 2 tuttavia ha il supporto per questo. Leggi questo: Dynamic, typesafe queries in JPA 2.0

+0

Quindi significa che non posso usarlo con la mia attuale implementazione di ibernazione? – Dejell

+0

@Odelya si l'opzione è passare a JPA 2 –

+0

Non è possibile utilizzare la sospensione come implementazione JPA? – Dejell

0

Ho lo stesso problema in passato, e in realtà non c'è modo di avere un riferimento dattiloscritto e rifattore (cambia nome) di un campo in java, quindi non è possibile avere un generatore di query che consentono questo, ma ho provato a costruire un'implementazione di un generatore di query che con qualche soluzione tenta di scrivere query di tipo sicuro e resistente ai refactor, il suo nome è ObjectQuery e puoi trovare alcune informazioni su here.

fammi sapere se risolve il tuo caso d'uso!

ovviamente non è nulla di standard quindi se stai cercando qualcosa di standard, è meglio JPA Typesafe ma non ha la stessa potenza!

Problemi correlati