I have a Spring Data REST application using JPA as the underlying implementation. I have a Data model similar to the following:
@Entity
public class Person {
@Id
private Long id;
private String name;
@ManyToOne
private Address address;
}
@Entity
public class Address {
@Id
private Integer id;
private String street;
private String city;
private String state;
private String zip;
@OneToMany(mappedBy = 'address')
private List<Person> people;
}
I've left out the getter/setters, but they are there. I then have two CrudRepository interfaces that defines access to the two entities. On the PersonRepository, I've defined a method findByNameAndAddress. The intent is to search for people with the given name and that have a linked address. The problem is that I think I'm supposed to pass in the Id of the address in the findByNameAndAddress query. But since I'm doing all of this via the REST client, I never have the id. When I retrieve the Address entities from the AddressRepository, SDR removes the Id field from the JSON respresentation. According to what I've read, the idea is to only use the self link when referring to the entity.
Now, obviously, I could determine what the ID is by parsing the self link and using that in the query, but that seems to be violating the whole HAL principal. Does anyone have any suggestions on how one is supposed to do something like this?