这是我的第一个Java Spring项目。我正在使用PostgreSQL来存储WorkedDay
实体,如下所示:
@Entity
@Table
public class WorkedDay {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
@JsonFormat(pattern = "yyyy-MM-dd")
private Date weekDay;
@Column
private Long employeeId;
@ManyToOne
@PrimaryKeyJoinColumn(name = "employeeId", referencedColumnName = "id")
private Employee employee;
@OneToMany
private List<WorkedHours> workedHours = new ArrayList<>();
}
所有“WorkedDays”都使用扩展WorkedDayRepository
的{{1}}类存储在PostgreSQL表中。我还创建了一个报告服务,它应该返回给定月份中CrudRepository
的列表。
WorkedDays
我目前在创建此自定义查询时遇到问题,因为我需要从表中检索具有特定月份的所有public class WorkedDayRepositoryImpl implements WorkedDayRepositoryCustom {
public List<WorkedDay> getReportByMonthValue(int monthValue) {
//service code implementation here
}
}
属性,并作为参数传递。
我对Spring JPA缺乏经验。有更好(或更简单)的方法吗?我尝试使用规范和Querydsl但失败了。
答案 0 :(得分:0)
这应该有效
@Repository
public interface WorkedDayRepository extends CrudRepository<WorkedDay> {
List<WorkedDay> findByWeekDay_Month(int month)
}
答案 1 :(得分:0)
您可以与@Query
功能结合使用MONTH
。
@Repository
public interface WorkedDayRepository extends CrudRepository<WorkedDay> {
@Query("select w from WorkedDay w where MONTH(w.weekDay) = ?1")
List<WorkedDay> findByWeekDay(int month)
}
请记住,并非所有数据库都支持MONTH()。否则,您可以使用SUBSTRING(w.weekDay,6,7)