环境
- 玻璃鱼 4.0
- JPA - Eclipselink 2.5.0
- MySQL 5.5.29
- 在 MySQL 中触发到调查表:
触发器代码
CREATE TRIGGER `survey_BINS`
BEFORE INSERT ON survey
FOR EACH ROW
SET NEW.created = NOW();
问题:
- 将新调查插入数据库到表调查
- 创建的字段获得了正确的值,但 UI 中的实体仍然是没有创建日期时间的旧实体
- 如果我退出并刷新页面,我会得到创建的日期时间
问题
- 如何避免这种情况?
- @PrePersist 符号可以成为 JPA 实体中的答案吗?
- 关闭缓存可能会有所帮助,但性能如何?
- 任何想法或解决方案如何在插入/更新到 UI 后获取更新的实体?
调查实体
@Column(name = "created")
@Temporal(TemporalType.TIMESTAMP)
private Date created;
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
SurveyREST 服务
@Stateless
@Path("com.insame.entity.survey")
public class SurveyFacadeREST extends AbstractFacade<Survey> {
@PersistenceContext(unitName = "com.sesame_insame_war_1.0-SNAPSHOTPU")
private EntityManager em;
public SurveyFacadeREST() {
super(Survey.class);
}
@POST
@Override
@Consumes({"application/xml", "application/json"})
public void create(Survey entity) {
super.create(entity);
}
@PUT
@Override
@Consumes({"application/xml", "application/json"})
public void edit(Survey entity) {
super.edit(entity);
}
抽象立面
public void create(T entity) {
getEntityManager().persist(entity);
}
public void edit(T entity) {
getEntityManager().merge(entity);
}
谢谢,萨米