Foreign key not printed on table

3

I have an entity that has the OneToOne relationship with another, but the foreign key of the other entity is not being printed on the table, the field is empty

Entity that has the OneToOne relationship

@Entity
public class LivroOrdem implements Serializable {

private static final long serialVersionUID = 1L;
// ATRIBUTOS
private Long idLivroOrdem;
private Art art;
private Date dataRealInicio;
private Date dataPrevistaConclusaoObra;
//private List<Relato> relatos;
private Relato relato;

// @OneToMany(fetch = FetchType.LAZY, mappedBy = "livroOrdem")
// CONSTRUTOR PADRÃO
public LivroOrdem() {
}

// OUTROS CONSTRUTORES
public LivroOrdem(Date dataRealInicioObra, Date dataPrevistaConclusaoObra) {
    this.dataRealInicio = dataRealInicioObra;
    this.dataPrevistaConclusaoObra = dataPrevistaConclusaoObra;
}

// GETTERS E SETTERS
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
//@Column(name = "idlivroOrdem", unique = true, nullable = false)
public Long getIdLivroOrdem() {
    return idLivroOrdem;
}

public void setIdLivroOrdem(Long idLivroOrdem) {
    this.idLivroOrdem = idLivroOrdem;
}

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
public Date getDataRealInicio() {
    return dataRealInicio;
}

public void setDataRealInicio(Date dataRealInicio) {
    this.dataRealInicio = dataRealInicio;
}

@OneToOne
public Art getArt() {
    return art;
}

public void setArt(Art art) {
    this.art = art;
}

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
public Date getDataPrevistaConclusaoObra() {
    return dataPrevistaConclusaoObra;
}

public void setDataPrevistaConclusaoObra(Date dataPrevistaConclusaoObra) {
    this.dataPrevistaConclusaoObra = dataPrevistaConclusaoObra;
}

/*
@OneToMany(mappedBy = "relatos")
public List<Relato> getRelatos() {
return relatos;
}
public void setRelatos(List<Relato> relatos) {
this.relatos = relatos;
}*/

@ManyToOne
public Relato getRelato() {
    return relato;
}

public void setRelato(Relato relato) {
    this.relato = relato;
}

@Override
public int hashCode() {
    int hash = 3;
    hash = 67 * hash + (this.idLivroOrdem != null ? this.idLivroOrdem.hashCode() : 0);
    return hash;
}

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final LivroOrdem other = (LivroOrdem) obj;
    if (this.idLivroOrdem != other.idLivroOrdem && (this.idLivroOrdem == null || !this.idLivroOrdem.equals(other.idLivroOrdem))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "LivroOrdem{" + "idLivroOrdem=" + idLivroOrdem 
            + ", art=" + art 
            + ", dataRealInicioObra=" + dataRealInicio 
            + ", dataPrevistaConclusaoObra=" + dataPrevistaConclusaoObra 
            + ", relato=" + relato + '}';
}

}

Database Table

ID |     DATA INICIO     |       DATA FIM      |ART_IDART (FK)
4  |"2018-11-30 00:00:00"|"2018-11-20 00:00:00"|  "";  
5  |"2018-11-30 00:00:00"|"2018-11-21 00:00:00"|  ""; 
    
asked by anonymous 20.11.2018 / 14:11

1 answer

1

In the getter where you are defining the relationship between your fields this:

@OneToOne
public Art getArt() {
    return art;
}

When actually should be returning a direct reference to the object that your class models, this way:

@OneToOne
public Art getArt() {
    return this.art;
}

To learn more about how this works, see and to understand more how relationships are mapped see p>

If your application is test-only, consider deleting the table and re-creating it.

    
20.11.2018 / 17:01