在没有主键的情况下搜索记录

时间:2017-04-21 11:44:04

标签: java spring spring-boot spring-data spring-data-jpa

我有一个Spring Entity类,如下所示。

@Entity
@Table(name = "Calendar_Month")
public class Calendar_Month {
    @Id
    @Transient
    private int Calendar_Month_ID;
    private String Calendar_Year;
    private String Calendar_Month;
    private String Calendar_Country;

使用相应的getter和setter。

我为此表访问编写了一个Spring数据jpa存储库,如下所示。

@Resource
public interface CalendarMonthRepository extends CrudRepository<Calendar_Month, Long> {

}

但我想使用Calendar_Month值读取所有记录。但Calendar_Month不是主键。所以我想知道如何实现这一目标。

有人可以帮我这个。

2 个答案:

答案 0 :(得分:2)

您应该可以使用query methods 像这样

@Repository
public interface CalendarMonthRepository extends CrudRepository<Calendar_Month, Long> {
   List<Calendar_Month> findByCalendar_Month(String calendar_Month)
}

您可以从Spring Data documentation找到以这种方式创建的查询类型。

答案 1 :(得分:1)

您已使用@Id标记了Calendar_Month_ID。注释@Id&#34;指定实体的主键。&#34;。生成Calendar_Month_ID主键,或将@Id注释移动到此实体的实际主键。在CalendarMonthRepository中,您应该能够创建如下方法:

public CalendarMonth findByCalendarMonthId(Long calendarMonthId)

创建CrudRepository方法: https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html

P.S。检查java variableNamingConvention:Variable naming conventions in Java?