@Test public void checkPositionsNotNull() throws Exception { EntityManager em = getEm(); HIterationProject project = em.find(HIterationProject.class, 1l); // assertThat( project, notNullValue() ); HDocument hdoc = new HDocument("fullpath", ContentType.TextPlain, en_US); hdoc.setProjectIteration(project.getProjectIterations().get(0)); List<HTextFlow> textFlows = hdoc.getTextFlows(); HTextFlow flow1 = new HTextFlow(hdoc, "textflow1", "some content"); HTextFlow flow2 = new HTextFlow(hdoc, "textflow2", "more content"); textFlows.add(flow1); textFlows.add(flow2); em.persist(hdoc); em.flush(); // em.clear(); // hdoc = em.find(HDocument.class, docId); em.refresh(hdoc); List<HTextFlow> textFlows2 = hdoc.getTextFlows(); assertThat(textFlows2.size(), is(2)); flow1 = textFlows2.get(0); assertThat(flow1, notNullValue()); flow2 = textFlows2.get(1); assertThat(flow2, notNullValue()); // TODO: we should automate this... hdoc.incrementRevision(); textFlows2.remove(flow1); flow1.setObsolete(true); dao.syncRevisions(hdoc, flow1); // flow1.setPos(null); em.flush(); em.refresh(hdoc); em.refresh(flow1); em.refresh(flow2); assertThat(hdoc.getTextFlows().size(), is(1)); flow2 = hdoc.getTextFlows().get(0); assertThat(flow2.getResId(), equalTo("textflow2")); flow1 = hdoc.getAllTextFlows().get("textflow1"); // assertThat(flow1.getPos(), nullValue()); assertThat(flow1.isObsolete(), is(true)); assertThat(flow1.getRevision(), is(2)); flow2 = hdoc.getAllTextFlows().get("textflow2"); // assertThat(flow1.getPos(), is(0)); assertThat(flow2.isObsolete(), is(false)); }