Возможно, вы не хотите переопределять метод get
.Возможно, вам нужен новый метод запроса ...
@Service(PlayerFile)
interface PlayerFileService {
PlayerFile get(Serializable id)
List<PlayerFile> list(Map args)
Long count()
void delete(Serializable id)
PlayerFile save(PlayerFile playerFile)
List<PlayerFile> findByOwner(User owner)
}
Если вам не нужен метод get
для других целей, удалите его.
EDIT
Обращаясь к комментарию ниже:
Где я могу разместить код для findByOwner (), показанный выше?Его нельзя добавить в абстрактный интерфейс.
Я не согласен с этим.Это определенно может быть в абстрактном интерфейсе.Вы можете превратить PlayerFileService
в abstract
class
и сделать findByOwner
конкретным методом, но это не обязательно.Это может быть абстрактный метод в интерфейсе, что является обычным явлением в Службе данных GORM, подобной этой.
См. Проект по https://github.com/jeffbrown/rock298query.
https://github.com/jeffbrown/rock298query/blob/3eb713a5ac2692be1fd9666eb7e6b26c8c9a0921/grails-app/services/rock298query/PlayerFileService.groovy
package rock298query
import grails.gorm.services.Service
@Service(PlayerFile)
interface PlayerFileService {
PlayerFile get(Serializable id)
List<PlayerFile> list(Map args)
Long count()
void delete(Serializable id)
PlayerFile save(PlayerFile playerFile)
List<PlayerFile> findByOwner(User owner)
}
https://github.com/jeffbrown/rock298query/blob/3eb713a5ac2692be1fd9666eb7e6b26c8c9a0921/grails-app/init/rock298query/BootStrap.groovy
package rock298query
class BootStrap {
UserService userService
PlayerFileService playerFileService
def init = { servletContext ->
def jeff = userService.save('Jeff')
def jake = userService.save('Jake')
jeff.addToFiles(new PlayerFile(playersJson: '{"title":"Jeff File 1"'))
jeff.addToFiles(new PlayerFile(playersJson: '{"title":"Jeff File 2"'))
jeff.addToFiles(new PlayerFile(playersJson: '{"title":"Jeff File 3"'))
userService.save jeff
jake.addToFiles(new PlayerFile(playersJson: '{"title":"Jake File 1"'))
jake.addToFiles(new PlayerFile(playersJson: '{"title":"Jake File 2"'))
jake.addToFiles(new PlayerFile(playersJson: '{"title":"Jake File 3"'))
userService.save jake
}
def destroy = {
}
}
https://github.com/jeffbrown/rock298query/blob/3eb713a5ac2692be1fd9666eb7e6b26c8c9a0921/grails-app/controllers/rock298query/DemoController.groovy
package rock298query
class DemoController {
PlayerFileService playerFileService
UserService userService
def jakeFiles() {
def jake = userService.find('Jake')
def files = playerFileService.findByOwner(jake)
render files*.playersJson
}
def jeffFiles() {
def jeff = userService.find('Jeff')
def files = playerFileService.findByOwner(jeff)
render files*.playersJson
}
}
Кажется, что все работает.
~ $ curl http://localhost:8080/demo/jakeFiles
['{"title":"Jake File 1"', '{"title":"Jake File 2"', '{"title":"Jake File 3"']
~ $
~ $ curl http://localhost:8080/demo/jeffFiles
['{"title":"Jeff File 1"', '{"title":"Jeff File 2"', '{"title":"Jeff File 3"']
Надеюсь, это поможет.