2016-01-14 5 views
1

визита ссылка https://github.com/ashishklae/postjob, когда я прохожу объект JSON это хранить нулевые значения в MongoDB используя DTO

, когда я выкладываю объект JSON это хранить все нулевые значения в MongoDB, но когда я обновить это работает, я использую DTO шаблон и я думаю, что мой метод создания в моей реализации службы postjob неправильный, какая-то логика отсутствует, пожалуйста, помогите.

код postjobserviceImplementation

package postjob.model; 

import java.util.List; 
import java.util.Optional; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import static java.util.stream.Collectors.toList; 

@Service 
public class PostJobServiceImp implements PostJobService { 

@Autowired 
private final PostJobRepository repository; 

@Autowired 
public PostJobServiceImp(PostJobRepository repository) { 
    this.repository = repository; 
} 

@Override 
public PostJobDTO create(PostJobDTO pj) { 

    PostJob postj = new PostJob(); 
    repository.save(postj); 
return convertToDTO(postj); 

} 


@Override 
public PostJobDTO update(PostJobDTO UID) { 
    PostJob updated = findpostJobById(UID.getId()); 
    updated.update(UID.getUserid(), UID.getSummary(),UID.getCategory(),UID.getSubCategory(),UID.getState(), UID.getPrivate(), UID.getBudget(),UID.getCity(),UID.getDuration(),UID.getINR(), UID.getReferenceDocs(), UID.getStatus(), UID.getDateTimeOfPost(), UID.getDescription(), UID.getLocation()); 
    updated = repository.save(updated); 
    return convertToDTO(updated); 
} 

@Override 
public List<PostJobDTO> findAll() { 
    List<PostJob> postJobEntries = repository.findAll(); 
    return convertToDTOs(postJobEntries); 
} 

    private List<PostJobDTO> convertToDTOs(List<PostJob> models) { 
     return models.stream() 
       .map(this::convertToDTO) 
       .collect(toList()); 
    } 

    @Override 
    public PostJobDTO findById(String id) { 
     PostJob job = findpostJobById(id); 
     return convertToDTO(job); 
    } 

private PostJob findpostJobById(String id) { 
    Optional<PostJob> result = repository.findOne(id); 
    return result.orElseThrow(() -> new PostJobNotFoundException(id)); 
} 


    private PostJobDTO convertToDTO(PostJob model) { 
    PostJobDTO dto = new PostJobDTO(); 

     dto.setUserid(model.getUserid()); 
     dto.setSummary(model.getSummary()); 
     dto.setCategory(model.getCategory()); 
     dto.setSubCategory(model.getSubCategory()); 
     dto.setDescription(model.getDescription()); 
     dto.setReferenceDocs(model.getReferenceDocs()); 
     dto.setBudget(model.getBudget()); 
     dto.setINR(model.getINR()); 
     dto.setLocation(model.getLocation()); 
     dto.setCity(model.getCity()); 
     dto.setState(model.getState()); 
     dto.setDuration(model.getDuration()); 
     dto.setDateTimeOfPost(model.getDateTimeOfPost()); 
     dto.setStatus(model.getStatus()); 
     dto.setPrivate(model.getPrivate()); 

     return dto; 
    } 
    } 

ответ

2

Это ваш метод:

@Override 
public PostJobDTO create(PostJobDTO pj) { 

    PostJob postj = new PostJob(); 
    repository.save(postj); 
    return convertToDTO(postj); 
} 

Я думаю, что вы хотите сохранить переданный PostJobDTO pj в вашей базе данных, не так ли?

Но вы делаете это: вы полностью игнорируете pj и создаете новый (пустой) почтовый ящик и сохраняете его.

Решение:

создать конструктор копирования для PostJob который принимает PostJobDTO и устанавливает значения DTO в его собственных полях.

=>

@Override 
public PostJobDTO create(PostJobDTO pj) { 

    PostJob postj = repository.save(new PostJob(pj)); 
    return convertToDTO(postj); 
} 

вы можете сделать это через PostJob convertToEnity(PostJobDTO pj) тоже.

=>

@Override 
public PostJobDTO create(PostJobDTO pj) { 

    PostJob postj = repository.save(convertToEntity(pj)); 
    return convertToDTO(postj); 
} 
+0

да, хотите хранить переданную PostJobDTO р^в базе данных, –

+0

, если предоставленный ответ соответствовать вашим потребностям, примите его;) если не дай мне теперь, что не хватает –

+0

я создал copy для PostJob, который принимает PostJobDTO. –

 Смежные вопросы

  • Нет связанных вопросов^_^