java - Object enum return always null value -
return (list<typeactioncommerciale>) query.list(); i don't understand why variable type in list null when select 
hibernatedaofactory:
public class hibernatedaofactory extends daofactory { public hibernatedaofactory() { super(); } ... @override public typeactioncommercialedao gettypeactioncommercialedao() { return new hibernatetypeactioncommercialedao(); } ... hibernatetypeactioncommercialedao:
public class hibernatetypeactioncommercialedao extends hibernatedao implements typeactioncommercialedao { public list<typeactioncommerciale> requestall() throws persistenceexception { query query = createquery("from typeactioncommercialeimpl"); return (list<typeactioncommerciale>) query.list(); } ... typeactioncommercialedao:
public interface typeactioncommercialedao extends dao { public list<typeactioncommerciale> requestall() throws persistenceexception; ... typeactioncommerciale:
public interface typeactioncommerciale { public integer getid(); public void setid(integer id); public integer getversion(); public void setversion(integer id); public string getlibelle(); public void setlibelle(string libelle); public string getcode(); public void setcode(string code); public typeactioncommercialeenum gettype(); public void settype(typeactioncommercialeenum type); public list<detailactioncommerciale> getvaleurpardefaut(); public void setvaleurpardefaut(list<detailactioncommerciale> valeurpardefaut); public void addtovaleurpardefaut(detailactioncommerciale valeurpardefaut); // ---------------- // operations // ---------------- public boolean isppfcp(); public boolean isautresservices(); } typeactioncommercialeenum:
public enum typeactioncommercialeenum { operation_de_mise_en_avant, operations_particulieres_de_communication_et_de_trade_marketing, information_des_clients_et_ou_publicite_sur_le_lieu_de_vente, operations_de_lancement_de_nouveaux_produits_avec_mise_en_avant, publicite_directe_consommateurs, convention_triannuelle, mise_a_disposition_du_labo, nip; } typeactioncommercialeimpl:
class typeactioncommercialeimpl implements typeactioncommerciale { // ---------------- // attributes // ---------------- private integer id; private integer version; /** */ private string libelle; /** */ private string code; /** */ private typeactioncommercialeenum type; // ---------------- // associations // ---------------- private list<detailactioncommerciale> valeurpardefaut = (list<detailactioncommerciale>)new arraylist<detailactioncommerciale>(); // ---------------- // accessors // ---------------- public integer getid() { return id; } public void setid(integer id) { this.id = id; } public integer getversion() { return version; } public void setversion(integer version) { this.version = version; } public string getlibelle() { return libelle; } public void setlibelle(string libelle) { this.libelle = libelle; } public string getcode() { return code; } public void setcode(string code) { this.code = code; } public typeactioncommercialeenum gettype() { return type; } public void settype(typeactioncommercialeenum type) { this.type = type; } // ---------------- // associations accessors // ---------------- public list<detailactioncommerciale> getvaleurpardefaut() { if (valeurpardefaut == null) { valeurpardefaut = new arraylist<detailactioncommerciale>(); } return valeurpardefaut; } public void setvaleurpardefaut(list<detailactioncommerciale> valeurpardefaut) { this.valeurpardefaut = valeurpardefaut; } public void addtovaleurpardefaut(detailactioncommerciale valeurpardefaut) { if (valeurpardefaut != null) getvaleurpardefaut().add(valeurpardefaut); } // ---------------- // operations // ---------------- // start of user code typeactioncommercialeimpl public boolean isautresservices() { switch (this.gettype()) { case nip: case convention_triannuelle: case mise_a_disposition_du_labo: return true; } return false; } public boolean isppfcp() { return !isautresservices(); } // end of user code typeactioncommercialeimpl @override public string tostring() { string res = "typeactioncommerciale [id=" + getid() + "]"; // start of user code tostring() // end of user code tostring() return res; } } mapping:
<many-to-one name="typeactioncommerciale" class="com.app.metier.impl.typeactioncommercialeimpl" column="typeactioncommercialeid" access="field" cascade="persist,merge,save-update" /> <class name="com.app.metier.impl.typeactioncommercialeimpl" table="typeactioncommerciale" discriminator-value="com.app.metier.typeactioncommerciale" proxy="com.app.metier.typeactioncommerciale" optimistic-lock="version" dynamic-update="true" dynamic-insert="true"> <id name="id" column="id"> <generator class="native" /> </id> <discriminator column="discriminator" type="string" /> <!-- <version name="version" type="integer" unsaved-value="null"></version> --> <property name="libelle" length="255" /> <property name="code" length="255" /> <property name="type" type="com.app.persistence.hibernate.usertype.typeactioncommercialeenumusertype" /> <list name="valeurpardefaut" cascade="all" lazy="true"> <key column="valeurpardefaut_typeactioncommercialeid" /> <index column="list_index_valeurpardefaut" /> <one-to-many class="com.app.metier.impl.detailactioncommercialeimpl" /> </list> </class> typeactioncommercialeenumusertype:
public class typeactioncommercialeenumusertype extends enumusertype<typeactioncommercialeenum> { public typeactioncommercialeenumusertype() { super(typeactioncommercialeenum.class); } }
i resolve pb have class public class enumusertype<e extends enum<e>> implements usertype , implement method:
@override public object nullsafeget(resultset rs, string[] names, sessionimplementor session, object owner) throws hibernateexception, sqlexception { string name = rs.getstring(names[0]); object result = null; if (!rs.wasnull()) { result = enum.valueof(clazz, name); } return result; } @override public void nullsafeset(preparedstatement st, object value, int index, sessionimplementor session) throws hibernateexception, sqlexception { if (null == value) { st.setnull(index, types.varchar); } else { st.setstring(index, ((enum<e>) value).name()); } } 
Comments
Post a Comment