我在JTA和Wildfly8中使用Eclipselink,问题是在提交用户事务并将数据插入数据库后,它不会更新相关实体,所以如果我重新加载页面或打开页面的新实例,它加载数据时不会插入行。
@ManagedBean
@ViewScoped
public class empcreator {
UserTransaction ut=null;
@PersistenceContext(unitName="game")
private EntityManager em;
Context icontext=null;
public empcreator() throws NamingException{
icontext=new InitialContext();
ut=(UserTransaction)icontext.lookup("java:comp/UserTransaction");
}
public void addElementToIsland() throws NamingException, NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException{
int objectid=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("objectid"));
int x=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("x"));
int y=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("y"));
int z=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("z"));
int r=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("r"));
int islid=selectedisland;
Query q=em.createNamedQuery("Element.findOne");
q.setParameter("id", objectid);
Element element=(Element)q.getResultList().get(0);
q=em.createNamedQuery("Island.findOne");
q.setParameter("islandid", islid);
Island isl=(Island)q.getResultList().get(0);
islandsobjects el=new islandsobjects();
el.setElement(element);
el.setX(x);
el.setY(y);
el.setZ(z);
el.setR(r);
el.setIsland(isl);
ut.begin();
em.persist(el);
ut.commit();
}
public void loadIsland(ActionEvent e){
Query q=em.createNamedQuery("Island.findOne");
q.setParameter("islandid", selectedisland);
List<islandsobjects> iobjects=((Island)q.getResultList().get(0)).getIobjects();
JsonObjectBuilder jsonOB=Json.createObjectBuilder();
JsonArrayBuilder jsonAB=Json.createArrayBuilder();
for(int i=0;i<iobjects.size();i++){
jsonOB.add("id", iobjects.get(i).getId());
Element element=iobjects.get(i).getElement();
jsonOB.add("name", element.getName());
jsonOB.add("x", iobjects.get(i).getX());
jsonOB.add("y", iobjects.get(i).getY());
jsonOB.add("z", iobjects.get(i).getZ());
jsonOB.add("r", iobjects.get(i).getR());
jsonOB.add("objectid", iobjects.get(i).getObjectid());
jsonOB.add("islandid", selectedisland);
jsonAB.add(jsonOB);
}
JsonObject jsElements=Json.createObjectBuilder().add("elements", jsonAB).build();
RequestContext.getCurrentInstance().execute("loadisland("+jsElements.toString()+")");
}
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="game" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/boddooo</jta-data-source>
<class>boddooo.entity.Empire</class>
<class>boddooo.entity.Empiresobject</class>
<class>boddooo.entity.Island</class>
<class>boddooo.entity.Element</class>
<class>boddooo.entity.User</class>
<class>boddooo.entity.World</class>
<class>boddooo.entity.islandsobjects</class>
<properties>
<property name="eclipselink.target-server" value="JBoss"/>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.persistence-context.flush-mode" value="auto" />
</properties>
</persistence-unit>
</persistence>
当我禁用缓存时,它解决了问题,但变得更慢,然后我使用这个
query.setHint("javax.persistence.cache.storeMode", "REFRESH");
它在没有禁用缓存的情况下更新了数据
审议本届会议: 这是一个在数据库中显示用户图像的图像,带有会话变量!然而,在我的网站中,我正在使用上传图像表单更改用户图片,用户图片正在更新,但旧图片将保留,直到我刷新页面…我希望避免刷新页面以解决此问题。。。。 请注意,我的目标是一个iframe,而不是重定向到我的操作。。。 这是我的上传表格,你可能不需要,但我会把它放在这里... 例如: 使现代化php示例 所以为了简单起见,我想在提交表单时
我在我的GAE数据存储实验中发现了一些很奇怪的东西。我使用的是GAE SDK 1.7.5。我不确定我的发现是否正确。 基本上,我发现在执行数据存储get之前,将实体放入数据存储并进行计数不会返回正确的值。 如果你想更深入地挖掘,这里是我前面的SO问题中的实际代码:
为什么在刷新页面后重新提交 去http://qass.im/message-envelope/ 并上传任何文件,但仅限文本"gif","jpeg","jpg","png","zip","pdf","docx","rar","txt" 上传后点击F5按钮刷新页面 现在重新提交并重新上传文件! 为什么呢? 我想在上传文件后禁用重新提交而不使用jquery
我有 在我的构建中。gradle我有 但是尽管成功了-到我的数据库中,它并没有添加任何新表。我有postreSQL,其中包含我所有表所在的方案- 我的控制台输出
情况: 我有两个与OneTomany/ManyToone关系相关的实体。 想象一下,每个类也有一个名为id和getter和setter的PK。 问题: 如果我创建一个EntityA实例并设置一个与已经存在的EntityB实例的关系并持久化这个新实例,那么所有数据都会正确地保存到数据库中。但是,如果我从我的EntityManager请求EntityB的实例,它的列表中将不包含刚刚持久化的Entity
我在hibernate search 6中使用elasticsearch时遇到了问题。让我们假设我们有这样的设置: } } 当我第一次持久化EntityA(即被索引的实体)时,EntityB作为EntityA的子实体持久化在elasticsearch索引中。这是可以的。当我直接编辑EntityB并对其进行更改时,问题出现了,这种更改没有传播到elasticsearch索引。我错过了什么吗? 更新1