Mapear classe como atributo de classe em JPA

3 respostas
jpajavaorm
W
Tenho uma classe que é um membro estático de outra classe. Esse membro/classe estático precisa ser mapeada.

Gostaria de aprender como fazer.

Alguém faria a gentileza de me ajudar ?

@Entity

@Table(name=LoteRps)

@XmlType(name = tcLoteRps, propOrder={

numeroLote,

cnpj,

inscricaoMunicipal,

quantidadeRps,

listaRps,

dataRecebimento,

protocolo,

situacao,

mensagemRetorno
})

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 XMLGregorianCalendar dataRecebimento;

private String protocolo;

private byte situacao;

private MensagemRetornoV3Vo mensagemRetorno;
// construtor padrão
public LoteRpsV3Vo() {
}

// métodos

// getters e setters

public static class ListaRps
{
    // atributos
    @XmlElement(name = "Rps", required = true)
    private List<RpsV3Vo> rps;

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

}

}

3 Respostas

L

Na classe que vai receber esse outro objeto como atributo, você vai marcar esse objeto atributo com @Embedded e na classe atributo você vai marcá-la com @Embeddable.

Fica assim:

public class Pessoa{
    private int id;

    @Embedded
    private Endereco endereco;
    ...
}

@Embeddable  
public class Endereco{
    private int id;
    private String logradouro;
    ...
}

Quando tiver um tempinho procura saber mais sobre as anotações do JPA.

W

A classe é um atributo de classe, e não uma classe. Não sei se vc percebeu esse detalhe.

L

Me responde uma coisa. Como que uma CLASSE é um atributo de classe e NÃO UMA CLASSE?

A CLASSE é um ATRIBUTO DE CLASSE e NÃO UMA CLASSE.

Isso dá a entender o seguinte: que eu tenho uma classe que vai ser atributo de outra, ou seja, a classe Endereço vai fazer parte como atributo da classe Pessoa. Isso tem algumas maneiras de ser resolvido: ou eu uso da forma como da primeira resposta ou pego pelo id ou então coloca todos os atributos em uma classe só.

Agora se não for isso, tenta explicar melhor.

Criado 11 de dezembro de 2017
Ultima resposta 12 de dez. de 2017
Respostas 3
Participantes 2