jpa “field list”中的未知列“d1_0.id_ruolo”

xwbd5t1u  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(102)

我得到这个错误Unknown column 'd1_0.id_ruolo' in 'field list'当我试图从我的控制器调用一个方法,返回我的员工列表,不幸的是我还没有弄清楚。我不明白为什么它搜索一个字段与此名称,因为我还没有设置任何名称这样。我对关系Map的正确设置有疑问,但是当我通过jpa工具自动生成我的实体时,这会很奇怪。我希望你能帮助我提前感谢
这是我的table:

CREATE TABLE `dipendente` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `nome` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_0900_ai_ci',
    `cognome` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_0900_ai_ci',
    `idRuolo` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY (`id`) USING BTREE,
    INDEX `FK_idRuolo` (`idRuolo`) USING BTREE,
    CONSTRAINT `FK_idRuolo` FOREIGN KEY (`idRuolo`) REFERENCES `ruolo` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)

CREATE TABLE `ruolo` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `ruolo` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_0900_ai_ci',
    `idDipendente` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY (`id`) USING BTREE,
    INDEX `idDipendente` (`idDipendente`) USING BTREE,
    CONSTRAINT `ruolo_ibfk_1` FOREIGN KEY (`idDipendente`) REFERENCES `dipendente` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)

这是我的实体:

package com.negozio.model;

import java.io.Serializable;
import java.util.List;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;

/**
 * The persistent class for the dipendente database table.
 * 
 */
@Entity
@NamedQuery(name="Dipendente.findAll", query="SELECT d FROM Dipendente d")
public class Dipendente implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    private int id;

    @Lob
    private String cognome;

    @Lob
    private String nome;

    //bi-directional many-to-one association to Ruolo
    @ManyToOne
    @JoinColumn(name="idRuolo")
    private Ruolo ruolo;

    //bi-directional many-to-one association to Ruolo
    @OneToMany(mappedBy="dipendente")
    private List<Ruolo> ruolos;

    public Dipendente() {
    }

    public int getId() {
        return this.id;
    }

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

    public String getCognome() {
        return this.cognome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Ruolo getRuolo() {
        return this.ruolo;
    }

    public void setRuolo(Ruolo ruolo) {
        this.ruolo = ruolo;
    }

    public List<Ruolo> getRuolos() {
        return this.ruolos;
    }

    public void setRuolos(List<Ruolo> ruolos) {
        this.ruolos = ruolos;
    }

    public Ruolo addRuolo(Ruolo ruolo) {
        getRuolos().add(ruolo);
        ruolo.setDipendente(this);

        return ruolo;
    }

    public Ruolo removeRuolo(Ruolo ruolo) {
        getRuolos().remove(ruolo);
        ruolo.setDipendente(null);

        return ruolo;
    }

}

package com.negozio.model;

import java.io.Serializable;
import java.util.List;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedQuery;
import jakarta.persistence.OneToMany;

/**
 * The persistent class for the ruolo database table.
 * 
 */
@Entity
@NamedQuery(name="Ruolo.findAll", query="SELECT r FROM Ruolo r")
public class Ruolo implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    private int id;

    @Lob
    private String ruolo;

    //bi-directional many-to-one association to Dipendente
    @OneToMany(mappedBy="ruolo")
    private List<Dipendente> dipendentes;

    //bi-directional many-to-one association to Dipendente
    @ManyToOne
    @JoinColumn(name="idDipendente")
    private Dipendente dipendente;

    public Ruolo() {
    }

    public int getId() {
        return this.id;
    }

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

    public String getRuolo() {
        return this.ruolo;
    }

    public void setRuolo(String ruolo) {
        this.ruolo = ruolo;
    }

    public List<Dipendente> getDipendentes() {
        return this.dipendentes;
    }

    public void setDipendentes(List<Dipendente> dipendentes) {
        this.dipendentes = dipendentes;
    }

    public Dipendente addDipendente(Dipendente dipendente) {
        getDipendentes().add(dipendente);
        dipendente.setRuolo(this);

        return dipendente;
    }

    public Dipendente removeDipendente(Dipendente dipendente) {
        getDipendentes().remove(dipendente);
        dipendente.setRuolo(null);

        return dipendente;
    }

    public Dipendente getDipendente() {
        return this.dipendente;
    }

    public void setDipendente(Dipendente dipendente) {
        this.dipendente = dipendente;
    }

}
6ljaweal

6ljaweal1#

默认情况下,camelCase中的列名将转换为snake_case。您应该更改field naming strategy,使用此配置应该可以工作

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

然而,这适用于所有实体,如果命名约定是一致的,这应该不是问题。

相关问题