字段列表中的hibernate子类未知列



所以我正在编写一个由研究人员团队组成的平台(荷兰语为"onderzoeker")。研究人员继承了Role,因为他们需要能够使用Spring安全登录。忽略了所有的接球手和二传手,但他们在那里!提前感谢:)

错误

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'onderzoeke0_.onderzoekerid' in 'field list'

Onderzoeker 类

 Class onderzoeker


@SuppressWarnings("serial")
@Entity
@DiscriminatorValue(value = "Onderzoeker")
public class Onderzoeker extends Rol {
@Column(name="onderzoekerid")
private int onderzoekerid;
@Column(name="onderzoekernaam")
protected String onderzoekernaam;
@Column(name="onderzoekervoornaam")
protected String onderzoekervoornaam;
@ManyToOne
@JoinColumn(name="onderzoekerteamid")
protected Team team;

    @Override
    public String getType() {
        return "Onderzoeker";
    }
}

Onderzoeker继承的类角色

package be.odisee.oxyplast.domain;

@DiscriminatorOptions(force=true)
@Entity
@Table(name="rollen")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE )
@DiscriminatorColumn(name="type",
discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue("Rol")
public abstract class Rol implements Serializable {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
protected int id;

@Column
protected String status;
@Column(unique=true)
@Index(name="IRol_usernaam",columnNames="usernaam")
protected String usernaam;
@ManyToOne
@JoinColumn(name="sessie_id")
protected Sessie sessie;
@ManyToOne
@JoinColumn(name="persoon_id")
protected Persoon persoon;
public Rol(){}
public Rol(String status, String usernaam, Sessie sessie, Persoon persoon) {
    this.status = status;
    this.usernaam = usernaam;
    this.sessie = sessie;
    this.persoon = persoon;
}
public Rol(int id, String status, String usernaam, Sessie sessie, Persoon persoon) {
    this.id = id;
    this.status = status;
    this.usernaam = usernaam;
    this.sessie = sessie;
    this.persoon = persoon;
}

这就足够解决问题了。是的,数据库是正确的,它需要是其他东西

我有同样的问题,我最终发现父类和子类都需要公共默认构造函数!

父类:

@MappedSuperclass
public abstract class Order {
    public Order() {
    }
}

子类:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name="ItemOrder")
public class ItemOrder extends Order {
public ItemOrder() throws Exception {
    super();        
}

我希望这个答案能帮助到别人。

最新更新