JPA 2.2: использование метода find для извлечения данных из mysqlDB - PullRequest
0 голосов
/ 03 апреля 2020

Я использую JPA 2.2 (Openjpa), работающий на OpenLiberty и mysqlVer 15.1 Distrib 10.1.21-MariaDB. У меня есть объект вызова учетной записи, где я использую entityManager.find для получения данной записи. Запись действительно извлечена, но только этот столбец «status» возвращает ноль. Но когда я делаю ручной выбор по БД, значение там.

Мой класс Entity Account

package br.com.rsm.model;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Transient;

//@XmlRootElement
@Entity
@Table(name = "tb_account")
@NamedQueries({
    @NamedQuery(name="Account.findByEmail", query="SELECT a FROM Account a where a.email = :email"),
    @NamedQuery(name="Account.findByCpf", query="SELECT a FROM Account a where a.cpf = :cpf"),
    @NamedQuery(name="Account.findByUserId", query="SELECT a FROM Account a where a.userId = :userId")
})


public class Account implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String userId;
    private String fullname;
    private String email;
    private String birthdate;
    private String cpf;
    private String rg;
    private String address;
    private String addressNumber;
    private String complement;
    private String cep;
    private String state;
    private int city;
    private String phone;
    private String mobile;
    private String carrier;

    @Column(name = "status")
    private String status;
    private long leftSide;
    private long rightSide;
    private Timestamp created;
    private String parentId;
    private String parentSide;
    private String networkSide; 
    private Timestamp activated;
    private double points;
    private String nickname;
    private String nis;
    private String whatsapp;
    private long bank;
    private String accountType;
    private String branchNumber;
    private String branchDigit;
    private String accountNumber;
    private String accountDigit;
    private String accountOwner;
    private String cpfAccountOwner;
    private String facebookID;
    private double career;
    private double pb;
    private int certID;
    private String automaticRenovation;
    private String emailPagamento;

    @Transient
    private Account rightSideAccount;

    @Transient
    private Account leftSideAccount;

    @Transient
    private boolean searchableBySignedInUser;

    @Transient
    private long totalCandidatosAgente;

    @Transient
    private long totalAgentes;

    @Transient
    private long totalAgentesBracoEsq;

    @Transient
    private long totalAgentesBracoDir;

    @Transient
    private long totalAnjos;

    @Transient
    private boolean cfaCompleto;

    //@Transient
    @OneToMany(cascade={CascadeType.ALL}, fetch = FetchType.LAZY, orphanRemoval = true)
    @JoinColumn(name = "owner" )
    List<Ticket> tickets = new ArrayList<Ticket>();

    @OneToMany(cascade={CascadeType.ALL}, fetch = FetchType.LAZY, orphanRemoval = true)
    @OrderBy("created DESC")
    @JoinColumn(name = "accountId" )    
    private List<Score> scores = new ArrayList<Score>();

    @OneToMany(cascade={CascadeType.ALL}, fetch = FetchType.LAZY, orphanRemoval = true)
    @OrderBy("activated DESC")
    @JoinColumn(name = "idAccount" )    
    private List<ProductAccount> productsAccount = new ArrayList<ProductAccount>(); 

    @OneToMany(cascade={CascadeType.ALL}, fetch = FetchType.LAZY, orphanRemoval = true)
    @JoinColumn(name = "origin" )   
    private List<Trade> trades = new ArrayList<Trade>(); 

    /**
     * Construtor
     */
    public Account() {}


    public List<Trade> getTrades() {
        return trades;
    }

    public void setTrades(List<Trade> trades) {
        this.trades = trades;
    }

    public List<ProductAccount> getProductsAccount() {
        return productsAccount;
    }

    public void setProductsAccount(List<ProductAccount> productsAccount) {
        this.productsAccount = productsAccount;
    }



    public List<Score> getScores() {
        return scores;
    }

    public void setScores(List<Score> scores) {
        this.scores = scores;
    }

    public Long getId() {
        return id;
    }

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

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(String birthdate) {
        this.birthdate = birthdate;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddressNumber() {
        return addressNumber;
    }

    public void setAddressNumber(String addressNumber) {
        this.addressNumber = addressNumber;
    }

    public String getComplement() {
        return complement;
    }

    public void setComplement(String complement) {
        this.complement = complement;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public int getCity() {
        return city;
    }

    public void setCity(int city) {
        this.city = city;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getCarrier() {
        return carrier;
    }

    public void setCarrier(String carrier) {
        this.carrier = carrier;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public long getLeftSide() {
        return leftSide;
    }

    public void setLeftSide(long leftSide) {
        this.leftSide = leftSide;
    }

    public long getRightSide() {
        return rightSide;
    }

    public void setRightSide(long rightSide) {
        this.rightSide = rightSide;
    }

    public Timestamp getCreated() {
        return created;
    }

    public void setCreated(Timestamp created) {
        this.created = created;
    }

    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public String getParentSide() {
        return parentSide;
    }

    public void setParentSide(String parentSide) {
        this.parentSide = parentSide;
    }

    public String getNetworkSide() {
        return networkSide;
    }

    public void setNetworkSide(String networkSide) {
        this.networkSide = networkSide;
    }

    public List<Ticket> getTickets() {
        return tickets;
    }

    public void setTickets(List<Ticket> tickets) {
        this.tickets = tickets;
    }

    public Timestamp getActivated() {
        return activated;
    }

    public void setActivated(Timestamp activated) {
        this.activated = activated;
    }

    public double getPoints() {
        return points;
    }

    public void setPoints(double points) {
        this.points = points;
    }

    @Transient
    public String getShortName() {
        if(fullname==null){
            return "";
        }
        if (nickname == null || nickname.isEmpty() ) {
            nickname = fullname;
        }

        if(nickname != null || !nickname.isEmpty()){
            String[] arrTmp = fullname.replace("\n", " ").split(" ");

            String shortName = "";

            if(arrTmp.length >= 2){
                shortName = arrTmp[0] + " " + arrTmp[1] ;
            }else if(arrTmp.length >= 1){
                shortName = arrTmp[0];
            }

            //Passo o limitador de tamanho para ambas situações.
            if(shortName!=null){
                if(shortName.length() > 20){
                    shortName = fullname.substring(0, 19) + "...";
                }
            }
            return shortName;

        }
        return "";
    }

    public String getNickname() {

        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getNis() {
        return nis;
    }

    public void setNis(String nis) {
        this.nis = nis;
    }

    public String getWhatsapp() {
        return whatsapp;
    }

    public void setWhatsapp(String whatsapp) {
        this.whatsapp = whatsapp;
    }

    public long getBank() {
        return bank;
    }

    public void setBank(long bank) {
        this.bank = bank;
    }

    public String getAccountType() {
        return accountType;
    }

    public void setAccountType(String accountType) {
        this.accountType = accountType;
    }

    public String getBranchNumber() {
        return branchNumber;
    }

    public void setBranchNumber(String branchNumber) {
        this.branchNumber = branchNumber;
    }

    public String getBranchDigit() {
        return branchDigit;
    }

    public void setBranchDigit(String branchDigit) {
        this.branchDigit = branchDigit;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    public String getAccountDigit() {
        return accountDigit;
    }

    public void setAccountDigit(String accountDigit) {
        this.accountDigit = accountDigit;
    }

    public String getAccountOwner() {
        return accountOwner;
    }

    public void setAccountOwner(String accountOwner) {
        this.accountOwner = accountOwner;
    }

    public String getCpfAccountOwner() {
        return cpfAccountOwner;
    }

    public void setCpfAccountOwner(String cpfAccountOwner) {
        this.cpfAccountOwner = cpfAccountOwner;
    }

    public String getFacebookID() {
        return facebookID;
    }

    public void setFacebookID(String facebookID) {
        this.facebookID = facebookID;
    }

    public double getCareer() {
        return career;
    }

    public void setCareer(double career) {
        this.career = career;
    }

    public double getPb() {
        return pb;
    }

    public void setPb(double pb) {
        this.pb = pb;
    }

    public int getCertID() {
        return certID;
    }

    public void setCertID(int certID) {
        this.certID = certID;
    }

    public String getAutomaticRenovation() {
        return automaticRenovation;
    }

    public void setAutomaticRenovation(String automaticRenovation) {
        this.automaticRenovation = automaticRenovation;
    }

    public String getEmailPagamento() {
        return emailPagamento;
    }

    public void setEmailPagamento(String emailPagamento) {
        this.emailPagamento = emailPagamento;
    }


    public Account getRightSideAccount() {
        return rightSideAccount;
    }

    public void setRightSideAccount(Account rightSideAccount) {
        this.rightSideAccount = rightSideAccount;
    }

    public Account getLeftSideAccount() {
        return leftSideAccount;
    }

    public void setLeftSideAccount(Account leftSideAccount) {
        this.leftSideAccount = leftSideAccount;
    }

    public boolean isSearchableBySignedInUser() {
        return searchableBySignedInUser;
    }

    public void setSearchableBySignedInUser(boolean searchableBySignedInUser) {
        this.searchableBySignedInUser = searchableBySignedInUser;
    }

    public long getTotalCandidatosAgente() {
        return totalCandidatosAgente;
    }

    public void setTotalCandidatosAgente(long totalCandidatosAgente) {
        this.totalCandidatosAgente = totalCandidatosAgente;
    }

    public long getTotalAgentes() {
        return totalAgentes;
    }

    public void setTotalAgentes(long totalAgentes) {
        this.totalAgentes = totalAgentes;
    }

    public long getTotalAgentesBracoEsq() {
        return totalAgentesBracoEsq;
    }

    public void setTotalAgentesBracoEsq(long totalAgentesBracoEsq) {
        this.totalAgentesBracoEsq = totalAgentesBracoEsq;
    }

    public long getTotalAgentesBracoDir() {
        return totalAgentesBracoDir;
    }

    public void setTotalAgentesBracoDir(long totalAgentesBracoDir) {
        this.totalAgentesBracoDir = totalAgentesBracoDir;
    }

    public long getTotalAnjos() {
        return totalAnjos;
    }

    public void setTotalAnjos(long totalAnjos) {
        this.totalAnjos = totalAnjos;
    }

    public boolean isCfaCompleto() {
        return cfaCompleto;
    }

    public void setCfaCompleto(boolean cfaCompleto) {
        this.cfaCompleto = cfaCompleto;
    }

    /**
     * Adiciona uma nova classe Score
     * @param score Score
     */
    public void addScore(Score score) {
        getScores().add(score);
    }

    public void addProductAccount(ProductAccount productAccount) {
        getProductsAccount().add(productAccount);
    }

    public void addTrade(Trade trade) {
        getTrades().add(trade);
    }


    @Override
    public String toString() {
        return "Account [id=" + id + ", userId=" + userId + ", fullname=" + fullname + ", email=" + email
                + ", birthdate=" + birthdate + ", cpf=" + cpf + ", rg=" + rg + ", address=" + address
                + ", addressNumber=" + addressNumber + ", complement=" + complement + ", cep=" + cep + ", state="
                + state + ", city=" + city + ", phone=" + phone + ", mobile=" + mobile + ", carrier=" + carrier
                + ", status=" + status + ", leftSide=" + leftSide + ", rightSide=" + rightSide + ", created=" + created
                + ", parentId=" + parentId + ", parentSide=" + parentSide + ", networkSide=" + networkSide
                + ", activated=" + activated + ", points=" + points + ", nickname=" + nickname + ", nis=" + nis
                + ", whatsapp=" + whatsapp + ", bank=" + bank + ", accountType=" + accountType + ", branchNumber="
                + branchNumber + ", branchDigit=" + branchDigit + ", accountNumber=" + accountNumber + ", accountDigit="
                + accountDigit + ", accountOwner=" + accountOwner + ", cpfAccountOwner=" + cpfAccountOwner
                + ", facebookID=" + facebookID + ", career=" + career + ", pb=" + pb + ", certID=" + certID
                + ", automaticRenovation=" + automaticRenovation + ", emailPagamento=" + emailPagamento
                + ", rightSideAccount=" + rightSideAccount + ", leftSideAccount=" + leftSideAccount
                + ", searchableBySignedInUser=" + searchableBySignedInUser + ", totalCandidatosAgente="
                + totalCandidatosAgente + ", totalAgentes=" + totalAgentes + ", totalAgentesBracoEsq="
                + totalAgentesBracoEsq + ", totalAgentesBracoDir=" + totalAgentesBracoDir + ", totalAnjos=" + totalAnjos
                + ", cfaCompleto=" + cfaCompleto + ", tickets=" + tickets + ", scores=" + scores + ", productsAccount="
                + productsAccount + ", trades=" + trades + "]";
    }
}

И это мой результат выбора (таблица снимков слишком большая)

[
  id=2111,
  userId=99YWK,
  fullname=PatrickRibeiroBraz,
  email=null,
  birthdate=null,
  cpf=null,
  rg=null,
  address=null,
  addressNumber=null,
  complement=null,
  cep=null,
  state=null,
  city=0,
  phone=null,
  mobile=null,
  carrier=null,
  status=null,
  leftSide=0,
  rightSide=0,
  created=2018-06-1212: 09: 29.0,
  parentId=999I2,
  parentSide=null,
  networkSide=null,
  activated=null,
  points=0.0,
  nickname=null,
  nis=null,
  whatsapp=null,
  bank=0,
  accountType=null,
  branchNumber=null,
  branchDigit=null,
  accountNumber=null,
  accountDigit=null,
  accountOwner=null,
  cpfAccountOwner=null,
  facebookID=null,
  career=0.0,
  pb=0.0,
  certID=0,
  automaticRenovation=null,
  emailPagamento=null,
  rightSideAccount=null,
  leftSideAccount=null,
  searchableBySignedInUser=false,
  totalCandidatosAgente=0,
  totalAgentes=0,
  totalAgentesBracoEsq=0,
  totalAgentesBracoDir=0,
  totalAnjos=0,
  cfaCompleto=false,
  tickets={
    IndirectList: notinstantiated
  },
  scores={
    IndirectList: notinstantiated
  },
  productsAccount={
    IndirectList: notinstantiated
  },
  trades={
    IndirectList: notinstantiated
  }
]

ID полное имя статуса

2111 Патрик Рибейро Браз C

Кто-нибудь проходил через это раньше?

...