jpaリポジトリを仕様で使いたい
今、私は2つのテーブルを持っています
@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long idUser;
private Area area;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="iduser")
public Long getIdUser() {
return idUser;
}
public void setIdUser(Long idUser) {
this.idUser = idUser;
}
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="idarea")
public Area getArea() {
return area;
}
public void setArea(Area area) {
this.area = area;
}
}
と面積表
@Entity
@Table(name = "area")
public class Area {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="idarea")
private Long idArea;
@Column(name="area_name")
private String areaName;
public Long getIdArea() {
return idArea;
}
public void setIdArea(Long idArea) {
this.idArea = idArea;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
}
次に、JpaSpecificationExecutorも拡張するユーザーリポジトリがあります
public interface UserRepository extends CrudRepository<User,Long>,JpaSpecificationExecutor<User> {
}
最後に、簡単な仕様があります
public class UserSpecification {
public static Specification<User> findByAreaName(final String areaName){
return new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root,
CriteriaQuery<?> criteria, CriteriaBuilder cb) {
return cb.equal(root.<String>get("??????"),areaName);
}
};
}
}
だから、私の質問は、「?????」に何を入れなければならないかです。それはテーブル領域のareaNameですか?