![](/img/trans.png)
[英]How to initialize entities fields representing their datetime of insertion into database using 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.