簡體   English   中英

在數據庫中插入JPA失敗

[英]JPA insertion in the database failed

我嘗試將數據插入數據庫時​​遇到問題。 我正在用jpa(persist)做。 這是我的代碼,我在其中調用方法插入

private static ServiceTicketRemote serviceTicket;
......
......

public void insertDevices(ActionEvent acteven) {

    java.sql.Date sqlDate = new java.sql.Date(dateDev.getTime());

    if(modele.equals("")|| serialNumber.equals("") || sqlDate.equals("") || categorie.equals("Select device")) {
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                "Champ(s) vide(s)", "");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
    else {
        Devices device = new Devices();

        Personnel as = getBeanLogin().getAgentSupport();
        Agentinfo agent = getBeanAgentinfo().getSelectedAgentInfo();

        device.setAgentinfo(agent);
        device.setPersonnel(as);
        device.setCategorie(categorie);
        device.setModele(modele);
        device.setNumeroSerie(serialNumber);
        device.setDateEnvoi(sqlDate);

        try {
                serviceTicket.insertDevices(device);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage
                    (FacesMessage.SEVERITY_INFO,"Device added", ""));  
            }
            catch(Exception e) {
                System.out.println("##########ERROR########createPers()########LoginBean#######" + e.getMessage());
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,"echec de l'ajout : error", e.getMessage());
                    FacesContext.getCurrentInstance().addMessage(null, msg);
            }
        }
}

在我的類serviceTicketRemote中,我有這樣的方法insertDevices(設備設備)調用:

@PersistenceContext(unitName = "jpa")
private EntityManager em;

@Override
public Devices insertDevices(Devices device) {
    try {
        em.persist(device); 
    }
    catch (Exception e) {
        System.out.println("##ERROR# insertNewTicketting " + e.getMessage());}
    return device;
}

這是我的實體bean設備:

@Entity
public class Devices implements Serializable {

    private static final long serialVersionUID = 1L;

            @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id_device")
    private int idDevice;

    //bi-directional many-to-one association to Agentinfo
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_agentinfo")
    private Agentinfo agentinfo; 

    //bi-directional many-to-one association to Personnel
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_per")
    private Personnel personnel;

        @Column(name="categorie")
    private String categorie;

    @Column(name="modele")
    private String modele;

    @Column(name="numero_serie")
    private String numeroSerie;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="date_envoi")
    private Date dateEnvoi;

    public double getIdDevice() {
    return idDevice;
    }

public void setIdDevice(int idDevice) {
    this.idDevice = idDevice;
}

public Agentinfo getAgentinfo() {
    return agentinfo;
}

public void setAgentinfo(Agentinfo agentinfo) {
    this.agentinfo = agentinfo;
}

public Personnel getPersonnel() {
    return personnel;
}

public void setPersonnel(Personnel personnel) {
    this.personnel = personnel;
}

public String getCategorie() {
    return categorie;
}

public void setCategorie(String categorie) {
    this.categorie = categorie;
}

public String getModele() {
    return modele;
}

public void setModele(String modele) {
    this.modele = modele;
}

public String getNumeroSerie() {
    return numeroSerie;
}

public void setNumeroSerie(String numeroSerie) {
    this.numeroSerie = numeroSerie;
}

public Date getDateEnvoi() {
    return dateEnvoi;
}

public void setDateEnvoi(Date dateEnvoi) {
    this.dateEnvoi = dateEnvoi;
}
}

當我運行我的應用程序時,它顯示“設備已添加”,我沒有任何錯誤,一切似乎都正常,但是我的數據庫中沒有任何內容,也沒有插入。

誰能幫我解決這個問題???

只是一個瘋狂的猜測:不應將EJB引用聲明為靜態。

private static ServiceTicketRemote serviceTicket;

嘗試將其更改為:

private ServiceTicketRemote serviceTicket;

看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM