我有从db和servlet获取数据的类,用于将该数据发送到jsp。如果我在表中插入或删除行(使用pgAdmin),将更新jsp上的数据(使用新数据),但是如果我更新表中的现有日期,则不会在jsp上更新(仅在重新启动glassfish之后)。用于ORM的类:
package db_classes;
@Entity
public class heading {
private Integer id;
private String name;
private Long themeCount;
private Collection<topic> topicsById;
@Id
@Column(name = "id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Basic
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Basic
@Column(name = "theme_count")
public Long getThemeCount() {
return themeCount;
}
public void setThemeCount(Long themeCount) {
this.themeCount = themeCount;
}
@OneToMany(mappedBy = "headingByIdHeading")
public Collection<topic> getTopicsById() {
return topicsById;
}
public void setTopicsById(Collection<topic> topicsById) {
this.topicsById = topicsById;
}
}
Servlet:
package controllers;
/**
* Created by Otani on 25.02.2015.
*/
@WebServlet(name = "Heading_parser")
@Stateful
public class Heading_parser extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Heading_processes heading_processes = new Heading_processes();
getServletContext().setAttribute("headings",heading_processes.getAllHeading());
request.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(request, response);
}
@Override
public void init() throws ServletException {
}
}
用于获取数据的Heading_processes方法:
public List<heading> getAllHeading() {
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
try {
Query query = entityManager.createQuery("SELECT h FROM heading h");
entityManager.getTransaction().commit();
return query.getResultList();
} catch (Exception e) {
entityManager.getTransaction().rollback();
} finally {
entityManager.close();
}
return null;
}
和index.jsp的片段:
<table class="table-border">
<tbody>
<c:forEach var = "heading" items = "${headings}">
<tr>
<td class="msg-img"><img src="image/message.png" width="32" height="32" alt="theme"></td>
<td><a href="showtopic.jsp?topic?id=${heading.id}" title=${heading.name}>${heading.name}</a></td>
<td class="count">${heading.themeCount} Тем <br> Сообщений:</td>
</tr>
</c:forEach>
</tbody>
</table>
UPD:添加pesistance.xml:
<persistence-unit name="forum">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>db_classes.heading</class>
<class>db_classes.message</class>
<class>db_classes.topic</class>
<class>db_classes.uncensoredWords</class>
<class>db_classes.users</class>
<properties>
<property name="eclipselink.jdbc.url" value="jdbc:postgresql://localhost:5432/forum"/>
<property name="eclipselink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="eclipselink.jdbc.user" value="****"/>
<property name="eclipselink.html" target="_blank">jdbc.password" value="*****"/>
</properties>
</persistence-unit>
</persistence>
这很可能是缓存问题。
请参阅以下文档:
https://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching
缺省情况下,EclipseLink使用共享对象缓存,该缓存缓存持久性单元读取和持久保存的所有对象的子集。EclipseLink共享缓存与本地EntityManager缓存不同。
共享缓存在持久性单元(EntityManagerFactory或服务器)的持续时间内存在,并且由所有EntityManager和持久性单元的用户共享
。本地EntityManager缓存不共享,仅在EntityManager或事务期间存在。共享缓存的好处在于,一旦读取了对象,如果使用查找操作再次读取了该对象,则无需访问数据库。同样,如果通过任何查询读取该对象,则无需重建该对象,也无需重新获取其关系。
共享缓存的局限性在于,如果通过JDBC或其他应用程序或服务器直接更改数据库,则共享缓存中的对象将失效。
您可以通过在JPA配置中添加以下内容并查看问题是否消失来快速验证这一点:
<property name="eclipselink.cache.shared.default" value="false"/>
是否要永久禁用缓存取决于您的用例,即其他应用程序将在现实世界中更新这些实体。
我是Flutter的新手,面临着StreamBuilder的问题 我在点击卡片列表中可用的按钮(应用按钮)时进行网络呼叫,基于显示的其他按钮。 我面临的问题是,小部件不更新成功的网络调用后,但当我刷新页面我得到更新的结果。 我做错了什么? 我没有在这方面使用任何状态。我需要用它吗? //下面是我如何将数据添加到流中的 预期结果:当我进行网络呼叫时,如果成功,那么根据网络结果,其他按钮必须显示在相应
UserViewModel: 用户存储库:
RecycerView只显示创建时ArrayList(适配器的数据)中的项。我所有添加更多行的尝试似乎都奏效了,但列表仍然是初始数据。它不是重复的,因为我尝试了谷歌上找到的所有建议。我已经做了什么: Adapter.NotifyDataSetChanged(); Adapter.NotifyItemChanged(5); recyleList.invalidate(); recyclelist.s
这个问题可能已经得到了回答,我读过很多类似的,但对我不起作用。因此,我的具有扩展的自定义表模型。我的数据是和列名。那么,当我的数据发生更改时,如何更新表呢?我一直在使用,它正在工作,但它将我的自定义单元格呈现器重置为默认值。谢了。
我正在开发一个web应用程序,使用React跟踪水果供应商的库存。js,MongoDB,Node。js和Express。我调用了数据库endpoint来呈现表中的数据。现在,我尝试使用按钮增加和减少库存量,但当我尝试设置新状态时,它不起作用。我尝试通过单击更改状态,然后更新数据库中的新状态。有什么建议吗? > 可结果成分: 从'react'导入Reac,{Component};从“react bo
问题内容: 我是Postgresql的新手,正在使用9.3版。我有一张桌子,里面有几行。我的问题是,当我更新一行时,该行号被更改并将其移动到表中的最后一个位置。我的问题是:这是否是默认行为,因为我认为在更新行时,不应将其从其位置移开?该操作似乎就像先删除然后再插入该行。 这是示例SQL: 从今起: 将ID为1的更新后的行移动到最后一个位置。 谢谢 问题答案: 行号已更改 关系表中没有“行号”之类的
我正在从ListView迁移到RecyclerView,但是在SQLite中输入一些数据之后,我的列表没有使用notifyDataSetChanged()更新;所以我总是必须调用setAdapter()方法; 回收器ViewAdapter 观赏者 模型
尝试使用PostgreSQL 9.2在表上运行这样的更新语句: 我们需要能够在 ~10M 行表上运行它,而不是让它锁定表(因此在更新运行时仍然可以进行正常操作)。我相信使用游标可能是正确的解决方案,但我真的不知道它是否是正确的,或者我应该如何使用游标实现它。 我想出了这个光标代码,我认为这可能很好。 编辑:添加光标功能