0

I'm reading from a database with some values that are null.

I'm using this class as structure:

@Entity
@Table(name="blueusuaris_csv")
@Getter
@Setter
@EqualsAndHashCode(of="IdUsuariUpf")
public class BlueUsuari implements Serializable {
    
    /**
     * 
     */
    private static final long serialVersionUID = 4117343667478629494L;
   
    @Id
    @Column(name = "idusuariupf")
    @ColumnDefault("")
    private String IdUsuariUpf;
    
    @Column(name = "idusuariopenlms")
    @ColumnDefault("")
    private String IdUsuariOpenLms;
    
    @Column(name = "nomcomplert")
    @ColumnDefault("")
    private String NomComplert;
    
    @Column(name = "nom")
    @ColumnDefault("")
    private String Nom;
    
    @Column(name = "cognoms")
    @ColumnDefault("")
    private String Cognoms;
    
    @Column(name = "genere")
    @ColumnDefault("")
    private String Genere;
    
    @Column(name = "email")
    @ColumnDefault("")
    private String Email;
    
    @Column(name = "anynaixement")
    @ColumnDefault("")
    private String AnyNaixement;
    
    @Column(name = "fotopdi")
    @ColumnDefault("")
    private String FotoPdi;
    
    @Column(name = "espdi")
    @ColumnDefault("")
    private String EsPdi;
    
    @Column(name = "rolblue")
    @ColumnDefault("")
    private String RolBlue;
    
    @Column(name = "rolconsulta")
    @ColumnDefault("")
    private String RolConsulta;
    
    @Column(name = "esestudiant")
    @ColumnDefault("")
    private String EsEstudiant;
    
    @Column(name = "rolestudi")
    @ColumnDefault("")
    private String RolEstudi;
    
    @Column(name = "roldepartament")
    @ColumnDefault("")
    private String RolDepartament;
    
    @Column(name = "departament")
    @ColumnDefault("")
    private String Departament;
    
    @Column(name = "codidepartament")
    @ColumnDefault("")
    private String CodiDepartament;
    
    @Column(name = "descdepartament_es")
    @ColumnDefault("")
    private String DescDepartament_es;
    
    @Column(name = "descdepartament_en")
    @ColumnDefault("")
    private String DescDepartament_en;
    
    @Column(name = "descdepartament_ca")
    @ColumnDefault("")
    private String DescDepartament_ca;
    
    @Column(name = "unis")
    @ColumnDefault("")
    private String unis;
    
    @Column(name = "tracte_ca")
    @ColumnDefault("")
    private String Tracte_ca;
    
    @Column(name = "tracte_es")
    @ColumnDefault("")
    private String Tracte_es;
    
    @Column(name = "tracte_en")
    @ColumnDefault("")
    private String Tracte_en;
}

As you can see I have tried @Columndefault but it doesn't work. I keep getting this from my console:

2022-03-21 18:36:55,462 TRACE o.h.t.d.s.BasicExtractor [BasicExtractor.java:50] extracted value ([unis24_5_] : [VARCHAR]) - [null]

It only happens with this field, other fields are NULL in the database but I'm getting:

2022-03-21 18:36:55,462 TRACE o.h.t.d.s.BasicExtractor [BasicExtractor.java:60] extracted value ([tracte_23_5_] : [VARCHAR]) - []

In this image, you can see that all camps are null, but I'm only receiving null from unis field:

enter image description here

  • But there is no `@ColumnDefault` on field `unis`. (BTW I think such as `idusuariopenlms` will be hard to read when doing SQL). – PeterMmm Mar 21 '22 at 18:03
  • Sorry, I upload a different code that tries the same objective. Yeah I know but I don't have the permissions to edit the Database – Aleix Martí Mar 21 '22 at 18:10
  • The manual said `The @ColumnDefault annotation is used to specify the DEFAULT DDL value`. But if the table is already created, it will have no effect on the loading into the object. So I understand the result for unis, but I do not understand for `tracte_23_5_`, whatever column this is, and I will bet it is not null (or the trace is'nt good). – PeterMmm Mar 21 '22 at 18:27
  • so I don't really know what's going on. Why do I get only null in this field if in the table all 3 have the same value. So any idea to set a null value to "" by default when I execute a simple findall in my repository – Aleix Martí Mar 21 '22 at 18:31
  • This class as an Entity represents the data in the database, therefore if the data in the database is null, this entity will have a null value. I would suggest putting any logic to handle null values outside of this entity. However, if you must return a value from this class that does not match the underlying data, you can do that by adding a method to the class and annotating it with @ Transient. – Zeke Rogers Mar 21 '22 at 20:31
  • `So any idea to set a null value to "" by default`, that could be done in the setter. As you use Lombok, read about to write a specific setter even with @Setter annot https://stackoverflow.com/questions/51388545/how-to-override-lombok-setter-methods – PeterMmm Mar 22 '22 at 18:39

0 Answers0