Relacionamento OneToMany utilizando objetos incorporáveis JPA

Olá para todos.
Estou com um problema em um relacionamento utilizando objetos incorporáveis.
Gostaria muito da ajuda de vocês.
Tenho uma classe “LoteRps” precisa ter uma Lista "List"
Eu tenho um problema, que resolvi criando uma classe, chamada “ListaRps”.
Essa classe está dentro do escopo da classe "LoteRpsV3Vo"
public class LoteRpsV3Vo implements Serializable
{
@Embeddable
public static class ListaRps
{

}
}

Gostaria de saber, se alguém me ajuda a mapear essa classe.
Vou passar tudo o que eu já tenho:

@Entity
@Table(name=“LoteRps”)
@XmlType(name = “tcLoteRps”, propOrder={
“numeroLote”,
“cnpj”,
“inscricaoMunicipal”,
“quantidadeRps”,
“listaRps”
})
public class LoteRpsV3Vo implements Serializable
{
// atributos
private String id;
private BigInteger numeroLote;
private String cnpj;
private String inscricaoMunicipal;
private Integer quantidadeRps;
private LoteRpsV3Vo.ListaRps listaRps;
private LocalDateTime dataRecebimento;
private String protocolo;
private byte situacao;
private MensagemRetornoV3Vo mensagemRetorno;

// construtor padrão
public LoteRpsV3Vo() {
}

// métodos
@Override
public String toString() {
    return "LoteRpsV3Vo{" + "id=" + id + ", numeroLote=" + numeroLote + ", cnpj=" + cnpj + ", inscricaoMunicipal=" + inscricaoMunicipal + ", quantidadeRps=" + quantidadeRps + ", listaRps=" + listaRps + ", dataRecebimento=" + dataRecebimento + ", protocolo=" + protocolo + ", situacao=" + situacao + ", mensagemRetorno=" + mensagemRetorno + '}';
}

@Override
public int hashCode() {
    int hash = 5;
    hash = 29 * hash + Objects.hashCode(this.id);
    return hash;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final LoteRpsV3Vo other = (LoteRpsV3Vo) obj;
    if (!Objects.equals(this.id, other.id)) {
        return false;
    }
    return true;
}

// getters e setters
@Id
@Column(nullable = false, length = 255, unique = true)
@XmlAttribute(name = "Id")
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

@Column(nullable = false, length = 15, unique = true)
@XmlElement(name = "NumeroLote", required = true)
@XmlSchemaType(name = "nonNegativeInteger")
public BigInteger getNumeroLote() {
    return numeroLote;
}

public void setNumeroLote(BigInteger numeroLote) {
    this.numeroLote = numeroLote;
}

@Column(nullable = false, length = 14)
@XmlElement(name = "Cnpj", required = true)
public String getCnpj() {
    return cnpj;
}

public void setCnpj(String cnpj) {
    this.cnpj = cnpj;
}

@Column(nullable = false, length = 15)
@XmlElement(name = "InscricaoMunicipal", required = true)
public String getInscricaoMunicipal() {
    return inscricaoMunicipal;
}

public void setInscricaoMunicipal(String inscricaoMunicipal) {
    this.inscricaoMunicipal = inscricaoMunicipal;
}

@Column(nullable = false, length = 4)
@XmlElement(name = "QuantidadeRps")
public Integer getQuantidadeRps() {
    return quantidadeRps;
}

public void setQuantidadeRps(Integer quantidadeRps) {
    this.quantidadeRps = quantidadeRps;
}

@XmlElement(name = "ListaRps", required = true)
@Embedded
public ListaRps getListaRps() {
    return listaRps;
}

public void setListaRps(ListaRps listaRps) {
    this.listaRps = listaRps;
}

@Column
@XmlTransient
public LocalDateTime getDataRecebimento() {
    return dataRecebimento;
}

public void setDataRecebimento(LocalDateTime dataRecebimento) {
    this.dataRecebimento = dataRecebimento;
}

@Column
@XmlTransient
public String getProtocolo() {
    return protocolo;
}

public void setProtocolo(String protocolo) {
    this.protocolo = protocolo;
}

@Column
@XmlTransient
public byte getSituacao() {
    return situacao;
}

public void setSituacao(byte situacao) {
    this.situacao = situacao;
}

@OneToOne(mappedBy = "loteRps", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@XmlTransient
public MensagemRetornoV3Vo getMensagemRetorno() {
    return mensagemRetorno;
}

public void setMensagemRetorno(MensagemRetornoV3Vo mensagemRetorno) {
    this.mensagemRetorno = mensagemRetorno;
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "rps"
})

@Embeddable
public static class ListaRps
{
    // atributos
    @XmlElement(name = "Rps", required = true)
    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
    protected List<RpsV3Vo> rps;

    // métodos
    public List<RpsV3Vo> getRps() {
        if (rps == null) {
            rps = new ArrayList<>();
        }
        return this.rps;
    }

    public void setRps(List<RpsV3Vo> rps) {
        this.rps = rps;
    }

}

}

@Entity

@Table(name=“Rps”)
@XmlType(name = “tcRps”, propOrder={
“infRps”
})
public class RpsV3Vo implements Serializable
{
// atributos
private Integer id;
private InfRpsV3Vo infRps;

// construtor padrão
public RpsV3Vo() {
}

// métodos
@Override
public String toString() {
    return "RpsV3Vo{" + "id=" + id + ", infRps=" + infRps + + '}';
}

@Override
public int hashCode() {
    int hash = 5;
    hash = 37 * hash + Objects.hashCode(this.id);
    return hash;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final RpsV3Vo other = (RpsV3Vo) obj;
    if (!Objects.equals(this.id, other.id)) {
        return false;
    }
    return true;
}

// getters e setters
@Id
@Column
@GeneratedValue(strategy = GenerationType.IDENTITY)
@XmlTransient
public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "infRpsId", referencedColumnName = "id",
        nullable = false, foreignKey = @ForeignKey(name = "fkRpsInfRps"))
@XmlElement(name = "InfRps", required = true)
public InfRpsV3Vo getInfRps() {
    return infRps;
}

public void setInfRps(InfRpsV3Vo InfRps) {
    this.infRps = InfRps;
}

}

O erro que estou recebendo é esse: “Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: LoteRps, for columns: [org.hibernate.mapping.Column(rps)]”