使用DTO进行Grails时无法调用后期操作

时间:2014-11-29 09:17:53

标签: grails dto

我想在使用Grails时使用DTO。我的DTO基本上是这样的:

class ProjectDTO {
   Long id
   Long version
   String name
}

我把文件放在src / groovy中,所以grails知道这不是域模型。 我还有一个转换器,可以将我的projectDTO转换为项目对象。

@Transactional
def save(ProjectDTO projectInstance) {
if (projectInstance == null) {
    render status: NOT_FOUND
    return
}       
ProjectDTOConverter converter = new ProjectDTOConverter()
Project p =  converter.convertFromDTOForSave(projectInstance)
p = projectService.save(p)

List<ProjectDTO> r = converter.convertToDTO(p)
respond r, [status: CREATED]
}

此策略似乎适用于GET,POST和DELETE操作,但不适用于PUT操作。似乎对于put操作,grails总是认为我的projectInstance变量为null,即使它被正确传递。

我做了一个SQL假脱机,似乎当你将任何对象传入PUT操作时,grails假定你正在使用一个域对象,并发出一个SQL语句来尝试从数据库中检索对象。如果无法检索对象,则由于某种原因,projectInstance会被清空。

有没有人知道是否有办法指示Grails我为PUT操作传入的对象不是域模型,而且grails不应该从数据库中检索它?

0 个答案:

没有答案