@Override @CacheEvict(value = "objectPermanent", allEntries = true) public void cloneObjectListToLayer( List<Long> objIdList, Long targetLayerId, GeoUser currentGeoUser) { List<GeoObject> originalObjects = listByIds(objIdList); for (GeoObject orig : originalObjects) { GeoObject obj = orig.clone(); obj.setId(null); HashSet<GeoObjectTag> objectTags = new HashSet<GeoObjectTag>(); for (GeoObjectTag prop : orig.getTags()) { GeoObjectTag tag = new GeoObjectTag(); tag.setKey(prop.getKey()); tag.setValue(prop.getValue()); tag.setGeoObject(obj); objectTags.add(tag); } obj.setTags(objectTags); obj.setCreatedBy(currentGeoUser); obj.setCreated(Calendar.getInstance().getTime()); getCurrentSession() .createSQLQuery( "INSERT INTO geo_layer_to_object (layer_id, object_id) VALUES(:lId, :oId)") .setLong("oId", add(obj).getId()) .setLong("lId", targetLayerId) .executeUpdate(); } }