我使用EclipseLink進行JPA持久化,並且我對這項技術很陌生。我是在一個情況下,我不得不更新在oracle數據庫表中的一個條目,我確實在數據庫中提交了此更新,但它不反映在JPA實體意味着我看不到數據在前端,但一旦我重啓tomcat服務器,我可以看到前端的數據。有人請幫助我後臺發生的事情。數據庫中的更新未反映在JPA實體中
在此先感謝!
SDS.java
import java.util.Date;
@Entity
@Table(name="SDS")
@XmlRootElement
public class SDS {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long sdsId;
@Column
private String sdsNumber;
@Column
private String sdsName;
@Column
private String sapId;
@Column(name = "DATE_FIELD")
@Temporal(TemporalType.TIMESTAMP)
private Date sdsDate;
public SDS() {}
public Long getSdsId() {
return sdsId;
}
public void setSdsId(Long sdsId) {
this.sdsId = sdsId;
}
public String getSdsNumber() {
return sdsNumber;
}
public void setSdsNumber(String sdsNumber) {
this.sdsNumber = sdsNumber;
}
public String getSdsName() {
return sdsName;
}
public void setSdsName(String sdsName) {
this.sdsName = sdsName.substring(0, Math.min(sdsName.length(), 254));
//this.sdsName = sdsName;
}
public Date getSdsDate() {
return sdsDate;
}
public void setSdsDate(Date sdsDate) {
this.sdsDate = sdsDate;
}
}
數據庫更新:
update SDS set date_field='10-FEB-2017' where sdsid=1102
我們展示的保存方法 –
你應該張貼您的代碼數據庫更新,並說明你是如何檢查更新不體現在JPA中。另外,請檢查日誌以查看是否有任何錯誤消息。 –
您可能正在爲每個請求重複使用同一個EntityManager,因此該實體位於第一級緩存中。不要這樣做。創建一個新的EM,啓動一個事務,獲取日期,提交事務,關閉EM。或者使用Spring,它爲您完成所有這些工作並支持聲明性事務。 –