1
I have a relationship of 1 to n from product to historical , that is, a product has several months/histories. How to read the following xml for Object?
<produto>
  <descricao>PAVESINO 800X15</descricao>
  <valor>2.30</valor>
  <historicos>
    <historico>
      <mesesHistoricos>2009-12-21 18:40:56.281 UTC</mesesHistoricos>
      <quantidade>6735</quantidade>
    </historico>
    <historico>
      <mesesHistoricos>2010-01-21 18:40:56.283 UTC</mesesHistoricos>
      <quantidade>5940</quantidade>
    </historico>
    <historico>
     <mesesHistoricos>2010-02-21 19:40:56.283 UTC</mesesHistoricos>
      <quantidade>4824</quantidade>
    </historico>
    <historico>
      <mesesHistoricos>2010-02-21 19:40:56.283 UTC</mesesHistoricos>
      <quantidade>7869</quantidade>
    </historico>
    <historico>
      <mesesHistoricos>2010-02-21 19:40:56.283 UTC</mesesHistoricos>
      <quantidade>8152</quantidade>
    </historico>
  </historicos>
</produto>
Follow the Product table :
@Entity
@Table(name = "product") @Namedqueries({ @Namedquery(name = Product.ALL, query = "Select a FROM Product a"), @Namedquery(name = Product.COUNT, query = "select Count(a) from Product a"), @Namedquery(name = Product.DESCRIPTION, query = "from Product Where upper(Description) = :Description") }) public class Product Implements Serializable {
private static final long serialVersionUID = 1L;
public final static String ALL = "produto.populaproduto";
public final static String COUNT = "produto.countprodutoTotal";
public final static String DESCRICAO = "produto.descricao";
private Long codigo;
private Integer Version;
private String codigoProduto;
private String descricao;
private BigDecimal valor;
private List<Historico> historicos = new ArrayList<>();
@OneToMany(mappedBy = "produto", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
public List<Historico> getHistoricos() {
    return historicos;
}
public void setHistoricos(List<Historico> historicos) {
    this.historicos = historicos;
}
public Produto() {
}
public Produto(String descricao, BigDecimal valor) {
    this.descricao = descricao;
    this.valor = valor;
}
@Version
public Integer getVersion() {
    return Version;
}
public void setVersion(Integer version) {
    Version = version;
}
@Id
@GeneratedValue
public Long getCodigo() {
    return codigo;
}
public void setCodigo(Long codigo) {
    this.codigo = codigo;
}
@NotBlank
@Column(nullable = false, length = 50)
public String getCodigoProduto() {
    return codigoProduto;
}
public void setCodigoProduto(String codigoProduto) {
    this.codigoProduto = codigoProduto;
}
public void setDescricao(String descricao) {
    this.descricao = descricao == null ? null : descricao.toUpperCase().trim();
}
@NotBlank
@Column(nullable = false, length = 100)
public String getDescricao() {
    return descricao;
}
@Column(name = "valor", nullable = false, precision = 10, scale = 2)
public BigDecimal getValor() {
    return valor;
}
public void setValor(BigDecimal valor) {
    this.valor = valor;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Produto other = (Produto) obj;
    if (codigo == null) {
        if (other.codigo != null)
            return false;
    } else if (!codigo.equals(other.codigo))
        return false;
    return true;
}
}
Follow the table Historico :
@Entity
@Table(name = "historical") @Namedqueries({ @Namedquery(name = Historico.ALL, query = "Select a FROM Historico a"), @Namedquery(name = Historico.COUNT, query = "select Count(a) from Historico a") }) public class Historico Serializable Mplements {
private static final long serialVersionUID = 1L;
public final static String ALL = "Historico.populaHistorico";
public final static String COUNT = "Historico.countHistoricoTotal";
public final static String DESCRICAO = "Historico.descricao";
private Long codigo;
private Integer Version;
private Date mesesHistoricos;
private Integer quantidade;
private Produto produto;
@Version
public Integer getVersion() {
    return Version;
}
public void setVersion(Integer version) {
    Version = version;
}
@Id
@GeneratedValue
public Long getCodigo() {
    return codigo;
}
public void setCodigo(Long codigo) {
    this.codigo = codigo;
}
@NotNull
@Temporal(TemporalType.DATE)
@Column(name = "meses_historicos", nullable = false)
public Date getMesesHistoricos() {
    return mesesHistoricos;
}
public void setMesesHistoricos(Date mesesHistoricos) {
    this.mesesHistoricos = mesesHistoricos;
}
@Column(nullable = false, length = 3)
public Integer getQuantidade() {
    return quantidade;
}
public void setQuantidade(Integer quantidade) {
    this.quantidade = quantidade;
}
@ManyToOne
@JoinColumn(name = "id_produto", nullable = false)
public Produto getProduto() {
    return produto;
}
public void setProduto(Produto produto2) {
    this.produto = produto2;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Historico other = (Historico) obj;
    if (codigo == null) {
        if (other.codigo != null)
            return false;
    } else if (!codigo.equals(other.codigo))
        return false;
    return true;
}
}