Java 通过反射访问持久属性的字段时出错
我在休眠状态下出错了Java 通过反射访问持久属性的字段时出错,java,hibernate,Java,Hibernate,我在休眠状态下出错了 Error accessing field [private java.lang.Integer br.com.moldargesso.moldar.entities.Cidade.id] by reflection for persistent property [br.com.moldargesso.moldar.entities.Cidade#id] : 1 obra类 @Entity @Table (name = "obras") public class Obr
Error accessing field [private java.lang.Integer br.com.moldargesso.moldar.entities.Cidade.id] by reflection for persistent property [br.com.moldargesso.moldar.entities.Cidade#id] : 1
obra类
@Entity
@Table (name = "obras")
public class Obra {
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column (name = "id")
private Integer id;
@OneToOne
@JoinColumn (name = "fk_cliente")
private Cliente cliente;
@OneToOne
@JoinColumn (name = "fk_cidade")
private Cidade cidade;
类CIDADE
@Entity
@Table (name = "cidade")
public class Cidade {
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column
private Integer id;
@Column
private String nome;
刀
公共列表(整数cidade){
会话会话=HibernateUtil.getSessionFactory().openSession();
条件=session.createCriteria(Obra.class);
如果(cidade!=null){
标准。添加(限制)和(
限制。eq(“cidade”,cidade));
}
标准.addOrder(Order.asc(“id”));
List obraList=criteria.List();
session.close();
回归客观;
}
我不知道怎么修,我是个乞丐,我想修。
有人能帮我吗?
谢谢。您没有用于
Cidade
类的get/setter,因此当框架初始化您的类或将值设置到它的字段时,它将抛出此错误。它是生成的。
Session session = HibernateUtil.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(Obra.class);
if(cidade != null){
criteria.add(Restrictions.and(
Restrictions.eq("cidade", cidade)));
}
criteria.addOrder(Order.asc("id"));
List<Obra> obraList = criteria.list();
session.close();
return obraList;
}