descanso de dados da mola com chave primária composta

Eu uso o descanso de dados de primavera para crud. Mas quando a entidade possui chaves primárias compostas, não sei como obter uma entidade fornecendo a chave primária.

Classe do rio:

@Entity
public class River {
    private RiverPK id;
    private Double length;
    private Timestamp date;
    private String comment;


    @Basic
    @Column(name = "length")
    public Double getLength() {
        return length;
    }

    public void setLength(Double length) {
        this.length = length;
    }

    @Basic
    @Column(name = "date")
    public Timestamp getDate() {
        return date;
    }

    public void setDate(Timestamp date) {
        this.date = date;
    }

    @Basic
    @Column(name = "comment")
    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    @Id
    public RiverPK getId() {
        return id;
    }

    public void setId(RiverPK id) {
        this.id = id;
    }
}

Classe RiverPK:

@Embeddable
public class RiverPK implements Serializable {
    private String name;
    private int upcode;
    private int downcode;

    @Column(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name = "upcode")
    public int getUpcode() {
        return upcode;
    }

    public void setUpcode(int upcode) {
        this.upcode = upcode;
    }

    @Column(name = "downcode")
    public int getDowncode() {
        return downcode;
    }

    public void setDowncode(int downcode) {
        this.downcode = downcode;
    } 

}

Classe RiverDAO:

@RepositoryRestResource(path = "river")
public interface RiverDAO extends JpaRepository<River, RiverPK> {
}

Então eu posso obter dados do rio por chamada gethttp: // localhost: 8080 / river /e também criar nova entidade para db por postagem de chamadahttp: // localhost: 8080 / river / {rio json}

river json é:

id": {

    "name": "1",
    "upcode": 2,
    "downcode": 3

},
"length": 4.4,
"date": 1493740800000,
"comment": "6"
}

No documento de descanso de dados da primavera, ele deve poder chamar get localhost: 8080 / river / 1 (a chave primária) para obter a entidade com a chave primária 1. Isso pode funcionar quando a entidade tiver apenas uma chave primária. Mas meu rio de entidade possui chaves primárias compostas como RiverPK. Se eu chamar get localhost: 8080 / river / {name = '1', upcode = 2, downcode = 3}, ele retornará um erro "Nenhum conversor encontrado capaz de converter do tipo [java.lang.String] para o tipo [com .example.db.entity.RiverPK] ", quero dizer uso de primavera {name = '1', upcode = 2, downcode = 3} como uma String, mas não o tipo RiverPK.

A questão é como chamar get \ put \ delete com chaves primárias compostas como outra entidade normal?

questionAnswers(2)

yourAnswerToTheQuestion