Ho seguito il tuo consiglio. Ho scritto il seguente codice
codice:
....
@Override public boolean equals(Object obj)
{
if (this == obj) return true;
if (!(obj instanceof Utenti)) return false;
Utenti ut = (Utenti)obj;
return UtilityVarie.confrontaOggetti.uguale(this.abilitato, ut.abilitato)
&& UtilityVarie.confrontaOggetti.uguale(this.cognome, ut.cognome)
&& UtilityVarie.confrontaOggetti.uguale(this.data_abilitazione, ut.data_abilitazione)
&& UtilityVarie.confrontaOggetti.uguale(this.data_cambio_passwd, ut.data_cambio_passwd)
&& UtilityVarie.confrontaOggetti.uguale(this.data_disabilitazione, ut.data_disabilitazione)
&& UtilityVarie.confrontaOggetti.uguale(this.data_inserimento, ut.data_inserimento)
&& UtilityVarie.confrontaOggetti.uguale(this.data_ultimo_login, ut.data_ultimo_login)
&& UtilityVarie.confrontaOggetti.uguale(this.data_variazione, ut.data_variazione)
&& UtilityVarie.confrontaOggetti.uguale(this.login_inserimento, ut.login_inserimento)
&& UtilityVarie.confrontaOggetti.uguale(this.login_variazione, ut.login_variazione)
&& UtilityVarie.confrontaOggetti.uguale(this.nome, ut.nome)
&& UtilityVarie.confrontaOggetti.uguale(this.passwd, ut.passwd)
&& UtilityVarie.confrontaOggetti.uguale(this.tipo, ut.tipo)
&& UtilityVarie.confrontaOggetti.uguale(this.utente, ut.utente)
&& UtilityVarie.confrontaOggetti.uguale(this.verifica, ut.verifica);
}
e questo
codice:
public static class confrontaOggetti
{
public static boolean uguale(String a, String b)
{
return a==b;
}
public static boolean uguale(Boolean a, Boolean b)
{
return a=b;
}
public static boolean uguale(java.sql.Timestamp a, java.sql.Timestamp b)
{
return a == null ? b == null : a.equals(b);
}
public static boolean uguale(Object a, Object b)
{
return a == null ? b == null : a.equals(b);
}
}
Il problem è che alcuni campi (Definiti Timestamp) cambiano valore aggiungendoSI i millisecondi senza che questi siano presenti nel DB...
codice:
private List<Utenti> thelist;
private Utenti current, old_current;
public void refreshUi()
{
UtentiDAO pdao = (UtentiDAO)SpringUtil.getBean("UtentiDAO");
Tabbox tbox = (Tabbox)getFellow("tbox");
tbox.setSelectedIndex(0);
thelist = pdao.findAll();
if (thelist.isEmpty() == false )
setCurrent(thelist.iterator().next()); <<<------------ !!!!!! E' qui il problema
binder.loadAll();
}
public void setCurrent(Utenti cur)
{
this.current= cur;
}
Il campo Data_variazione prima del setCurrent è: 08/12/2010 08:47:03.0
Dopo il set Current (che è il campo nel DB) è: 08/12/2010 08:47:03.557
E' un problema di casting, oppure di JdbcTemplate, oppure sono un pistola?
Grazie