private ArrayList<MetaUnitEntityItemDTO> toEntitySubitemsDTOs(MetaUnitEntityItem item) {
   ArrayList<MetaUnitEntityItemDTO> subitems = new ArrayList<MetaUnitEntityItemDTO>();
   if (item.getSubitems() != null)
     for (MetaUnitEntityItem it : item.getSubitems()) {
       subitems.add(toEntityItemDTO_Light(it));
     }
   return subitems;
 }
 private void getRecursiveItemsFlattened(
     ArrayList<String> names, ArrayList<Long> ids, MetaUnitEntityItem ite, String shift) {
   if (ite.getSubitems() != null && ite.getSubitems().size() > 0)
     for (MetaUnitEntityItem item : ite.getSubitems()) {
       names.add(shift + item.getValue());
       ids.add(item.getId());
       getRecursiveItemsFlattened(names, ids, item, ". " + shift);
     }
 }
 @Override
 public ArrayList<Long> getEntityItemSubitemsIDs(Long id_item) {
   MetaUnitEntityItem item = em.find(MetaUnitEntityItem.class, id_item);
   Collection<MetaUnitEntityItem> items = item.getSubitems();
   ArrayList<Long> arr = new ArrayList<Long>();
   for (MetaUnitEntityItem it : items) {
     arr.add(it.getId());
   }
   return arr;
 }
  private MetaUnitEntityItemDTO toEntityItemDTO(MetaUnitEntityItem item) {
    MetaUnitEntityItemDTO dto =
        new MetaUnitEntityItemDTO(item.getId(), item.getValue(), item.getMapped_values());
    ArrayList<Long> ent_ids = new ArrayList<Long>();
    for (Long id : item.getTagged_entities_ids()) {
      ent_ids.add(id);
    }

    ArrayList<String> ent_idents = new ArrayList<String>();
    for (String ident : item.getTagged_entities_identifiers()) {
      ent_idents.add(ident);
    }
    dto.setTagged_entities_ids(ent_ids);
    dto.setTagged_entities_identifiers(ent_idents);

    ArrayList<MetaUnitEntityItemDTO> subitems = new ArrayList<MetaUnitEntityItemDTO>();
    if (item.getSubitems() != null)
      for (MetaUnitEntityItem it : item.getSubitems()) {
        subitems.add(toEntityItemDTO(it));
      }
    dto.setSubitems(subitems);
    return dto;
  }