当前位置: 首页 > 知识库问答 >
问题:

在SpringBoot中设置一对一关系失败,@JoinColumns(Column不存在)

裴姚石
2023-03-14

我有表,我不会翻译数据库对象,因为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 L.util.psqlException:error:casavenda0_1_.id_anunciante列不存在提示:也许您是想引用“casavenda0_.id_anunciante”列。

共有1个答案

卢英范
2023-03-14

我像这样注释了专栏,它奏效了:

 @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "id_anunciante", referencedColumnName = "id")
private Corretor corretor;
 类似资料:
  • 我在和实体之间有以下一对一的关系: 和 这一切工作得很好,但是如果我添加到类中的字段,并调用,则会失败: 原因:javax。坚持不懈RollbackException:在组织提交事务时出错。冬眠内部的例外情况ConverterImpl。org上的ConvertCommitteException(ExceptionConverterImpl.java:77)。冬眠发动机交易内部的Transactio

  • 我试图坚持两个实体,它们有一对一和多对一的关系。 我正在尝试将表单集合嵌入到表单中。 我有一个多对一相关的实体,每次我创建一个新的课程简历,它与Candidat列相关candidat_id_id为空。 除了数据可数据中的Candidat id之外,只有实体Curendar umVitae被成功创建和持久化。 简历表 id|titre|candidat_id_id|id_education cand

  • 我有一个实体: 要创建上述实体并将其保存到JPA存储库中,我将执行以下操作: 由于DB中的表存储了候选对象的FK,我认为设置一个id就足够了。但JPA希望我设置候选对象。这迫使我查询候选存储库。 是否需要从候选库中查询候选人以保存,或者如果我有可用的候选人id,我不能直接设置它?

  • 让我们来理解MS Access中的一对一关系。 这种关系用于将一个表中的一条记录与另一个表中的一条记录相关联。 现在转到 数据库工具 选项卡。 点击关系 选项。然后选择和,然后单击添加按钮将它们添加到视图中,然后关闭显示表格对话框。如下图所示 - 要创建这两个表之间的关系,请使用鼠标,然后单击并按住Employees 中的字段,然后将该字段拖放到要关联的字段上,方法是将鼠标悬停在tblHRData

  • 问题内容: 我正在尝试在MySQL数据库中实现“一对一”的关系。例如,假设我有一个Users表和一个Accounts表。我想确保一个用户只能拥有一个帐户。每个用户只能有一个帐户。 我找到了两个解决方案,但是不知道该使用什么,还有其他选择。 第一个解决方案: 在此示例中,我在指向用户主键的帐户中定义外键。然后,我使外键成为唯一键,因此帐户中不能有两个相同的用户。要联接表,我将使用以下查询: 第二种解

  • 我试图在MySQL数据库中实现“一对一”的关系。例如,假设我有一个Users表和一个Accounts表。我想确保一个用户只能有一个帐户。每个用户只能有一个帐户。 我找到了两个解决方案,但不知道该用什么,还有其他的选择。 在本例中,我定义了指向用户中主键的帐户中的外键。然后我使外键唯一,所以帐户中不能有两个相同的用户。要联接表,我将使用以下查询: null 如果我将这些解决方案中的任何一个导入到My