无法在springboot中设置一对一关系,@joincolumns(column不存在)

mzillmmw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(257)

我有表,我不会翻译数据库对象,因为orm可能使用命名约定。

casa_venda (in english house_sale, the table name) 
 id_anunciante (in english id of the announcer, column to join)

校正器

corretor (in english would be broker)
 id (in english id, column to join)

一套房子属于一个经纪人。
我的实体类如下所示:

@Entity
@Table(name="casa_venda")
public class CasaVenda extends Casa {

      @Column(name="id_anunciante",  insertable=false, updatable=false)
    private Integer idAnunciante;

        @Column(name="preco")
    private Integer preco;

     public Integer getPreco() {
        return preco;
    }

    public void setPreco(Integer preco) {
        this.preco = preco;
    }

    public Integer getIdAnunciante() {
        return idAnunciante;
    }

    public void setIdAnunciante(Integer idAnunciante) {
        this.idAnunciante = idAnunciante;
    }

    public Corretor getCorretor() {
        return corretor;
    }

    public void setCorretor(Corretor corretor) {
        this.corretor = corretor;
    }

      @OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
     @JoinTable(name="corretor",  
    joinColumns={@JoinColumn(name="id_anunciante", referencedColumnName="id")}
   )  

    private Corretor corretor;

}

其他实体

/**
 *
 * @author diego
 */
@Entity
@Table(name="corretor")
public class Corretor {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private long id;

    @Column(name="primeiro_nome")

    private String primeiroNome;

    @Column(name="sobrenome")
    @NotNull(message="O sobrenome é obrigatório")
    private String sobrenome;

    @Column(name="id_sexo")
    private int idSexo;

    @Column(name="creci")
    @NotNull(message="O creci é obrigatório")
    private String creci;

    @Column(name="email")
    @Pattern(regexp="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])", message="O email é inválido!")
    private String email;

    @Column(name="senha")
    private String senha;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getPrimeiroNome() {
        return primeiroNome;
    }

    public void setPrimeiroNome(String primeroNome) {
        this.primeiroNome = primeroNome;
    }

    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }

    public String getCreci() {
        return creci;
    }

    public void setCreci(String creci) {
        this.creci = creci;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public int getIdSexo() {
        return idSexo;
    }

    public void setIdSexo(int idSexo) {
        this.idSexo = idSexo;
    }

}

当我尝试使用findbyid时,我得到:org.postgresql.util.psqlexception:error:column casavenda0\u 1\u.id\u anunciante does not exists提示:也许您是想引用列“casavenda0\u.id\u anunciante”。

xqkwcwgp

xqkwcwgp1#

我给专栏加了这样的注解,它起了作用:

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "id_anunciante", referencedColumnName = "id")
private Corretor corretor;

相关问题