private Poi savePoiNoTransaction(Poi poi){
  List<PoiTag> poiTagsToRemove=poiTagDao.queryByPoiId(poi.getId());
  poiTagsToRemove.removeAll(poi.getTags());
  for (  PoiTag poiTag : poiTagsToRemove) {
    poiTagDao.delete(poiTag);
  }
  List<PoiNodeRef> poiNodeRefsToRemove=poiNodeRefDao.queryByPoiId(poi.getId());
  poiNodeRefsToRemove.removeAll(poi.getNodeRefs());
  for (  PoiNodeRef poiNodeRef : poiNodeRefsToRemove) {
    poiNodeRefDao.delete(poiNodeRef);
  }
  poiDao.createOrUpdate(poi);
  if (poi.getTags() != null) {
    for (    PoiTag poiTag : poi.getTags()) {
      poiTag.setPoi(poi);
      poiTagDao.createOrUpdate(poiTag);
    }
  }
  if (poi.getNodeRefs() != null) {
    for (    PoiNodeRef poiNodeRef : poi.getNodeRefs()) {
      poiNodeRef.setPoi(poi);
      poiNodeRefDao.createOrUpdate(poiNodeRef);
    }
  }
  return poi;
}

private Poi savePoiNoTransaction ( Poi poi ) { List < PoiTag > poiTagsToRemove = poiTagDao . queryByPoiId ( poi . getId ( ) ) ; poiTagsToRemove . removeAll ( poi . getTags ( ) ) ; for ( PoiTag poiTag : poiTagsToRemove ) { poiTagDao . delete ( poiTag ) ; } List < PoiNodeRef > poiNodeRefsToRemove = poiNodeRefDao . queryByPoiId ( poi . getId ( ) ) ; poiNodeRefsToRemove . removeAll ( poi . getNodeRefs ( ) ) ; for ( PoiNodeRef poiNodeRef : poiNodeRefsToRemove ) { poiNodeRefDao . delete ( poiNodeRef ) ; } poiDao . createOrUpdate ( poi ) ; if ( poi . getTags ( ) != null ) { for ( PoiTag poiTag : poi . getTags ( ) ) { poiTag . setPoi ( poi ) ; poiTagDao . createOrUpdate ( poiTag ) ; } } if ( poi . getNodeRefs ( ) != null ) { for ( PoiNodeRef poiNodeRef : poi . getNodeRefs ( ) ) { poiNodeRef . setPoi ( poi ) ; poiNodeRefDao . createOrUpdate ( poiNodeRef ) ; } } return poi ; }
method saving a poi and all the associated foreign collections without transaction management . < p / > do not call the dao directly to save a poi , use this method .
