2009-10-28 22 views

risposta

9

MySQL tratta il tipo di enum come stringa per le query. Così si dovrebbe essere in grado di utilizzare PreparedStatement.setString() metodo e passare il nome enum ad esso:

preparedStatement.setString(1, MY_ENUM.name()); 

Ciò presuppone, ovviamente, che i nomi per la tua Java e MySQL enumerazioni partita.

Avviso:name() è stato scelto al posto di toString() come, secondo la documentazione:

nome()Questo metodo è stato progettato principalmente per l'uso in situazioni particolari in cui la correttezza dipende su come ottenere il nome esatto , che non varierà da versione a versione.

1

Se preferisci a conservarlo come intero (che è più spazio e prestazioni amichevole) si potrebbe fare questo:

preparedStatement.setInt (1, myEnum.ordinal());

Ciò fornisce la semplicità, tuttavia, è necessario essere sicuri di non modificare l'ordine degli elementi enumerazione nel codice in quanto ciò interromperà la loro relazione con ciò che è memorizzato nel db.