-
Notifications
You must be signed in to change notification settings - Fork 54
Getting Started
Graham Webber edited this page Jul 15, 2015
·
1 revision
##Getting Started
Create your domain objects:
####Person
@Entity
public class Person {
@Id
private String id;
@Column(name= "customer_name")
private String name;
@OneToOne
@Column(name = "lives_at")
private Address address;
@OneToMany
@Column(name = "was_located_at")
private Set<Location> locations;
}
####Address
@Entity
public class Address {
@Id
private String id;
private String country;
private String city;
private String street;
}
####Location
@Entity
public class Location {
@Id
private String id;
private Date date;
@Index(type = SPATIAL_LATITUDE)
private double latitude;
@Index(type = SPATIAL_LONGITUDE)
private double longitude;
}
Now create a repository for people:
public interface PersonRepository extends GremlinRepository<Person> {
List<Person> findByLastName(String lastName);
List<Person> findByLastNameLike(String lastName);
List<Person> findByFirstNameAndLastName(String firstName, String lastName);
List<Person> findByFirstNameOrLastName(String firstName, String lastName);
List<Person> findByFirstNameLike(String string);
@Query(value = "graph.V().has('firstName', ?)")
List<Person> findByFirstName(String firstName);
@Query(value = "graph.V().has('firstName', ?)")
Page<Person> findByFirstName(String firstName, Pageable pageable);
@Query(value = "graph.V().has('firstName', ?)")
List<Map<String, Object>> findMapByFirstName(String firstName);
@Query(value = "graph.V().has('firstName', ?)")
Map<String, Object> findSingleMapByFirstName(String firstName);
List<Person> findByAddress_City(String city);
@Query(value = "delete vertex from (select from Person where firstName <> ?)", nativeQuery = true, modify = true)
Integer deleteAllExceptPerson(String firstName);
@Query(value = "select expand(in('was_located_at')) from (select from Location where [latitude,longitude,$spatial] near [?,?,{\"maxDistance\":?}])", nativeQuery = true)
Page<Person> findNear(double latitude, double longitude, double radius, Pageable pageable);
}