Duvida em JPA hibernate

2 respostas
jpajavahibernate
C

Bom sou novo no java e estou com uma duvida.
Como faço para ignorar uma coluna de uma classe que foi marcada como @Embeddable?

Isso é possivel pois o @Transient não funciona neste caso?

2 Respostas

Frmichetti

Posta sua classe aqui para ajudar melhor…

Tente definir a sua propriedade como transiente também, exemplo:

class NameStore implements Serializable{
@Column    
    private String firstName;
    //Aqui propriedade que será ignorada
@Transient
        private transient String middleName;
@Column        
private String lastName;

        public NameStore (String fName, String mName, String lName){
            this.firstName = fName;
            this.middleName = mName;
            this.lastName = lName;
        }

        public String toString(){
            StringBuffer sb = new StringBuffer(40);
            sb.append("First Name : ");
            sb.append(this.firstName);
            sb.append("Middle Name : ");
            sb.append(this.middleName);
            sb.append("Last Name : ");
            sb.append(this.lastName);
            return sb.toString();
        }
    }

    public class TransientExample{
        public static void main(String args[]) throws Exception {
            NameStore nameStore = new NameStore("Steve", "Middle","Jobs");
            ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("nameStore"));
            // writing to object
            o.writeObject(nameStore);
            o.close();

            // reading from object
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("nameStore"));
            NameStore nameStore1 = (NameStore)in.readObject();
            System.out.println(nameStore1);
        }
    }

Output
First Name : Steve
Middle Name : null // Middle Name é ignorado e nao é considerável para Persistencia ou Serialização
Last Name : Jobs

C

Olá boa tarde.
Esta é uma classe abstrata. Eu gostaria que os campos "result " e “error” fossem ignorados pois não são necessários no banco. mas a classe que herda de documentos o cpf por exemplo está marcada com @Embeddable na classe pessoa física.

Não sei se é possível mas pela logica deveria funcionar.

package pessoa.documents;

import java.beans.Transient;

import javax.persistence.Column;

import javax.persistence.MappedSuperclass;

/**

  • Classe abstrata utilizada para representar documentos como CPF,CNPJ RG entre

  • outros

  • @author diney 23/02/17
    */
    @MappedSuperclass
    public abstract class Documents {

    @Column(name = “documento”)
    
    protected String numero;
    
    @Column(name = “expedicao”)
    
    private String dataExpedicao;
    
    @Column(name = “orgao_expedicao”)
    
    private String orgaoExpeditor;
    
    @Column(name = “UF_origem”)
    
    private String UFOrigem;
    
    /<em>@Transient</em>/
    
    protected transient boolean result;
    
    /<em>@Transient</em>/
    
    protected transient String error;
    

    public Documents() {
    }

    public Documents(String numero) {
    
    docValidate(numero);
    
    }
    
    public Documents(String numero, String dataExped) {
    
    docValidate(numero);
    
    this.dataExpedicao = dataExped;
    
    }
    
    public Documents(String numero, String dataExped, String orgaoExped) {
    
    docValidate(numero);
    
    this.dataExpedicao = dataExped;
    
    this.orgaoExpeditor = orgaoExped;
    
    }
    
    public Documents(String numero, String dataExped, String orgaoExped, String UFOrigem) {
    
    docValidate(numero);
    
    this.dataExpedicao = dataExped;
    
    this.orgaoExpeditor = orgaoExped;
    
    this.UFOrigem = UFOrigem;
    
    }
    
    public String getNumero() {
    
    return numero;
    
    }
    
    public void setNumero(String numero) {
    
    docValidate(numero);
    
    }
    
    public String getDataExpedicao() {
    
    return dataExpedicao;
    
    }
    
    public void setDataExpedicao(String dataExpedicao) {
    
    this.dataExpedicao = dataExpedicao;
    
    }
    
    public String getOrgaoExpeditor() {
    
    return orgaoExpeditor;
    
    }
    
    public void setOrgaoExpeditor(String orgaoExpeditor) {
    
    this.orgaoExpeditor = orgaoExpeditor;
    
    }
    
    public String getUFOrigem() {
    
    return UFOrigem;
    
    }
    
    public void setUFOrigem(String UFOrigem) {
    
    this.UFOrigem = UFOrigem;
    
    }
    
    protected void docValidate(String numero) {
    
    boolean num = numero.matches("\d{3}\.\d{3}\.\d{3}-\d{2}");
    
    if (num) {
    
    this.numero = numero;
    
    } else {
    
    //            this.error = Numero do documento informado é inválido!;
    
    //            this.result = false;
    
    }
    
    //        return this.result;
    
    }
    
    }
    
Criado 2 de março de 2017
Ultima resposta 4 de mar. de 2017
Respostas 2
Participantes 2