java – 使用jpa / hibernate进行实体更新的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用jpa / hibernate进行实体更新的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2607字,纯文字阅读大概需要4分钟。
内容图文
![java – 使用jpa / hibernate进行实体更新的问题](/upload/InfoBanner/zyjiaocheng/741/4c3a3e3c00e54fccbaefe310005d8d83.jpg)
我有这个实体类,称为“Pagina”,我想根据对实体所做的更改来更新数据库中的条目.这不起作用.我没有错误,但数据库没有改变.
@Entity
@Table(name = "PAGINA")
@NamedQueries({@NamedQuery(name = "Pagina.findAll", query = "SELECT p FROM Pagina p"),
@NamedQuery(name = "Pagina.findHashByURL", query= "SELECT p.chash FROM Pagina p WHERE p.url = :url"),
@NamedQuery(name = "Pagina.findTimestampByURL", query= "SELECT p.timestamp FROM Pagina p WHERE p.url = :url"),
@NamedQuery(name = "Pagina.findByUrl", query = "SELECT p FROM Pagina p WHERE p.url = :url"),
@NamedQuery(name = "Pagina.findByProfondita", query = "SELECT p FROM Pagina p WHERE p.profondita = :profondita"),
@NamedQuery(name = "Pagina.findByIntervallo", query = "SELECT p FROM Pagina p WHERE p.intervallo = :intervallo"),
@NamedQuery(name = "Pagina.findByTimestamp", query = "SELECT p FROM Pagina p WHERE p.timestamp = :timestamp"),
@NamedQuery(name="Pagina.findAllURL", query="SELECT p.url FROM Pagina p"),
@NamedQuery(name="Pagina.findDelayByURL", query="SELECT p.intervallo FROM Pagina p WHERE p.url = :url"),
@NamedQuery(name = "Pagina.findByUpdated", query = "SELECT p FROM Pagina p WHERE p.updated = :updated")})
public class Pagina implements Serializable, Delayed{
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "URL")
private String url;
@Column(name = "PROFONDITA")
private Integer profondita;
@Column(name = "INTERVALLO")
private Integer intervallo;
@Lob
@Column(name = "CHASH")
private String chash;
@Column(name = "TIMESTAMP")
private Integer timestamp;
@Column(name = "UPDATED")
private Boolean updated;
[cut]
在另一个类中,我使用包含在实体上工作的方法的类中定义的方法来检索存储在数据库(mysql)中的对象.此方法使用查询“findAll”.方法的代码如下:
public List<Pagina> findAll(){
EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("CrawlerPU");
EntityManager em = emf.createEntityManager();
List o = (List) em.createNamedQuery("Pagina.findAll").getResultList();
return o;
}
我正在使用此方法,您可以在代码中看到:
PaginaMethods p = new PaginaMethods();
List<Pagina> l = p.findAll();
while (it.hasNext()) {
Pagina s = (Pagina) it.next();
s.setUpdated(Boolean.TRUE);
如果我观看数据库,则此操作后没有任何变化.我的persistence.xml有条目“”
你能帮助我吗?我不知道如何解决这个问题……如果需要,我可以改变一些事情.
解决方法:
可以将Hibernate看作是一个大缓存,它可以将数据库用作“存储”,它可以将不适合缓存的内容放入其中.当你更改它时,Hibernate不会将所有内容刷新到数据库,它会等待.有可能您可能会更改对象中的多个字段.
因此,您需要刷新会话(em.flush()),或者必须运行查询,或者必须提交当前事务(使用Spring时不是一个简单的选项).
内容总结
以上是互联网集市为您收集整理的java – 使用jpa / hibernate进行实体更新的问题全部内容,希望文章能够帮你解决java – 使用jpa / hibernate进行实体更新的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。