0

我整天都在试图解决这个问题。我已经阅读了多个站点和文档,但我可以通过这个。我将 Java 与 ObjectDB 一起使用。

我有一个名为 Pedido 的类,它有一个对类 Cliente 的引用 ManyToOne。

@Entity
public class Pedido {
    @Id @GeneratedValue
    private long id;

    @Embedded private Direccion origen;
    @ManyToOne(optional=true)
        private Cliente cliente; //Opcional

    @Basic(optional=false) private Date fechaYhora; //Fecha en que se debe enviar el coche

}

@Entity
public class Cliente extends Persona{
    @OneToMany(mappedBy="Pedido.cliente")
       public List<Pedido> pedidos;

}

Persona 类没有什么特别之处。只是几个变数。String、int 和嵌入式类。

问题是,当我尝试获取客户端列表时,出现错误。

static public List<Cliente> getClientes() throws Exception{
        em = EMF.createEntityManager();
        List<Cliente> results = null;
        try{
            TypedQuery<Cliente> query = em.createQuery("SELECT c FROM Cliente c", Cliente.class);
            results = query.getResultList();
        }finally{
            em.close();
        }
        return results;
    }

在此方法结束时,“结果”为空。即使在查询之后。在 em.close() 我得到一个例外:

com.objectdb.o._PersistenceException:无法使用反射写入字段字段 entidades.Cliente.pedidos 的值

这有什么问题?我想我在 oneToMany - manyToOne 上的连接不好。但我无法弄清楚。

如何进行正确的连接?如何成功检索列表?

4

1 回答 1

0

您必须更改 mappedBy 属性的值:

@OneToMany(mappedBy="cliente")

即在没有类名的情况下在所有者端指定字段名。

于 2017-03-09T14:06:24.030 回答