我使用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,它为您完成所有这些工作并支持声明性事务。 –