Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA:如何检测现有实体是否已更新?_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA:如何检测现有实体是否已更新?

Java JPA:如何检测现有实体是否已更新?,java,hibernate,jpa,Java,Hibernate,Jpa,是否有更好的方法来检查/检测数据库中是否更新了实体?原因是系统会发布对外部Web服务的任何更改,如果没有更改,我们就不想发布,因为Web服务的响应速度很慢(我们希望在发布可变文本长度时保持soap正文的轻量级) 我目前的做法如下: 对于给定实体: public class Comment { int id; String text; } 在我的服务类中,我会这样检测: public class CommentServiceImpl { void saveList(List&l

是否有更好的方法来检查/检测数据库中是否更新了实体?原因是系统会发布对外部Web服务的任何更改,如果没有更改,我们就不想发布,因为Web服务的响应速度很慢(我们希望在发布可变文本长度时保持soap正文的轻量级)

我目前的做法如下:

对于给定实体:

public class Comment {
   int id;
   String text;
}
在我的服务类中,我会这样检测:

public class CommentServiceImpl {
   void saveList(List<Comment> comments) {
      for(Comment c : comments) {
         Comment existing = this.findById(c.id);
         if (existing != null) {
            boolean nochange = existing.getText().equals(c.getText());
            if (nochange) { 
               //do nothing, we don't want to publish to external webservice
            } else {
               this.save(c);
               externalWs.publish(c);
            }
      }
   }
}
公共类CommentServiceImpl{
作废保存列表(列表注释){
对于(注释c:注释){
注释existing=this.findById(c.id);
if(现有!=null){
布尔nochange=existing.getText().equals(c.getText());
if(nochange){
//不执行任何操作,我们不希望发布到外部Web服务
}否则{
这一点。保存(c);
外部发布(c);
}
}
}
}

这在JPA中不是一个答案,但是,如果您使用的是Oracle,DCN是一个非常好的api。请检查它:


数据库中最后更新的列如何?这可以由数据库或应用程序自动更新,这是您的选择。然后让Web服务返回自某个时间戳以来更新的所有条目。