@Repository
public interface ChildRepository extends ParentRepository<Person, Long> {
}
@Query("FROM Person p WHERE p.name = :name")
Person findByName(@Param("name") String name);
class Person {
@Id
Long id;
// ...
}
class Person {
// ...
@Transient
int age;
// ...
}
public class Person {
// ...
@CreatedBy
User creator;
@LastModifiedBy
User modifier;
@CreatedDate
Date createdAt;
@LastModifiedDate
Date modifiedAt;
// ...
}
@Query("SELECT COUNT(*) FROM Person p")
long getPersonCount();
@Query("FROM Person p WHERE p.name = :name")
Person findByName(@Param("name") String name);
@Query(value = "SELECT AVG(p.age) FROM person p", nativeQuery = true)
int getAverageAge();
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(
name = "count_by_name",
procedureName = "person.count_by_name",
parameters = {
@StoredProcedureParameter(
mode = ParameterMode.IN,
name = "name",
type = String.class),
@StoredProcedureParameter(
mode = ParameterMode.OUT,
name = "count",
type = Long.class)
}
)
})
class Person {}
@Procedure(name = "count_by_name")
long getCountByName(@Param("name") String name);
@Lock(LockModeType.NONE)
@Query("SELECT COUNT(*) FROM Person p")
long getPersonCount();
@Modifying
@Query("UPDATE Person p SET p.name = :name WHERE p.id = :id")
void changeName(@Param("id") long id, @Param("name") String name);
@Configuration
@EnableJpaRepositories(basePackages = "com.flydean.repository")
public class PersistenceConfig {
}