【问题标题】:Using hibernate and get "could not get a field value by reflection" error使用休眠并获得“无法通过反射获取字段值”错误
【发布时间】:2017-09-02 21:11:26
【问题描述】:

我正在使用休眠来映射和类,但我得到了错误。我的映射是一个学生有许多学校科目。我首先使用postgres创建数据库。谢谢!

CREATE TABLE aluno
(
  idAluno serial,
  datanascimento date,
  matricula character varying(255),
  nome character varying(255),
  CONSTRAINT pkAluno PRIMARY KEY (idAluno)
);

CREATE TABLE materiaaluno
(
  idCurso serial,
  nome character varying(255),
  idAluno integer NOT NULL,
  CONSTRAINT pkMateriAluno PRIMARY KEY (idcurso),
  CONSTRAINT fkAluno FOREIGN KEY(idAluno) REFERENCES aluno(idAluno)
);

警告:#{alunoBean.salvar()}: java.lang.Exception: 无法通过 modelo.Materia.idcurso 的反射 getter 获取字段值 javax.faces.FacesException: #{alunoBean.salvar()}: java.lang.Exception: 无法通过 modelo.Materia.idcurso 的反射 getter 获取字段值

阿鲁诺类

package modelo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "aluno")
public class Aluno implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idaluno")
private Integer idaluno;

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

@Temporal(TemporalType.DATE)
@Column(name = "datanascimento")
private Date datanascimento;

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

@OneToMany(mappedBy = "aluno", cascade = CascadeType.ALL)
private List<Materia> materias;

// contructors, getters and setters

}

材料类

package modelo;

import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "materiaaluno")
public class Materia implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idcurso")
private Integer idcurso;

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "idaluno")
private Aluno aluno;

// constructor, getters and setters
}

【问题讨论】:

  • 您确定这是休眠异常而不是 JSF 吗? javax.faces.FacesException

标签: java postgresql hibernate


【解决方案1】:

您可能忘记/写错了实体Materia 中的setter 和getter。
当 Hibernate 无法以其他方式访问时,它会尝试通过反射访问字段。

勾选idcurso字段

【讨论】:

  • 我的朋友给了我同样的建议,我试过了但没有用,我检查了每个 getter 和 setter,在我自动生成所有但继续给出相同的错误之后。我非常感谢您能提供的任何帮助。链接pastebinlink
猜你喜欢
  • 2014-12-03
  • 2013-08-15
  • 1970-01-01
  • 2016-07-17
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 2016-10-24
相关资源
最近更新 更多