package org.osbp.mysmartshop.dtos.service;

import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
import org.osbp.mysmartshop.entities.DtoTestChildContainment;

@SuppressWarnings("all")
public class DtoTestChildContainmentDtoService extends AbstractDTOServiceWithMutablePersistence<DtoTestChildContainmentDto, DtoTestChildContainment> {
  public DtoTestChildContainmentDtoService() {
    // set the default persistence ID
    setPersistenceId("testCarstore");
  }
  
  public Class<DtoTestChildContainmentDto> getDtoClass() {
    return DtoTestChildContainmentDto.class;
  }
  
  public Class<DtoTestChildContainment> getEntityClass() {
    return DtoTestChildContainment.class;
  }
  
  public Object getId(final DtoTestChildContainmentDto dto) {
    return dto.getId();
  }
}
