mick...@posteo.net
unread,Jun 29, 2022, 3:25:11 AM6/29/22Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Java User Group TAA
Buongiorno.
In breve: ho una classe @Entity che contiene un campo enum
(JPA/Hibernate). Avrei bisogno di stabilire una mappatura tra
l'etichetta dell'enum ed il valore salvato sulla colonna del DB. Dopo
qualche tentativo, ho trovato questa soluzione:
public enum UnEnum {
ETICHETTA_1("e1"),
ETICHETTA_2("e2"),
...
ETICHETTA_N("eN");
String etichetta;
UnEnum(String etichetta) {...}
static public UnEnum of(String etichetta) {...}
}
@Converter //javax.persistence
public class UnEnumConverter implements AttributeConverter<UnEnum,
String> {// javax.persistence
}
Et voilà! Tutto funziona... con due enum su tre!
Il terzo mi mette in difficoltà con i CrudRepository di spring-data,
perché il metodo che fa la select, non mi trova nulla. Però va
specificata meglio tutta l'architettura, che è un po' articolata.
@Entity
public class ClasseEntity {
@EmbeddedId
NomeTipo nomeTipo;
... altri campi
}
@Embeddable
public class NomeTipo implements Serializable { //Serializable è
richiesto da @Embeddable
UnEnum tipo;
String nome;
...
}
Sul DB la tabella ClasseEntity comprende le due colonne tipo e nome
(CHAR e VARCHAR), che assieme costituiscono la chiave primaria. Infine
il repository:
public interface ClasseEntotyRepository extends
CrudRepository<ClasseEntity, NomeTipo> {
ClasseEntity findByNomeTipo(NomeTipo id);
}
Quest'ultimo metodo mi ritorna null, nonostante il DB contenga i dati
giusti.
Magari qualcuno ha già sbattuto la testa su un problema analogo, e sa
indirizzarmi?
--
Michele