如何使用spring数据jpa查询没有主键的表

时间:2014-08-03 13:54:31

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

有一个简单的查询,我只需要运行一个选择。下面是示例select语句。

    <named-native-query name="Capacity.findByCapacityCount" result-class="com.model.Capacity">
        <query>    
SELECT MAX_VAL,
      FROM PARAMETER
     WHERE  LOCATION = :facilityCode
       AND FUN_C = :functionName
       AND PAM_TYP = :dayOfWeek
        </query>
    </named-native-query>

对于查询结果,我创建了一个名为Capacity的简单实体类。

@Entity 
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Capacity  {        

    @Column(name="PAM_VAL_DCM") 
    private BigDecimal slotCount;

}

当我的应用程序启动时,我收到错误&#34;没有为实体&#34;指定标识符。我低估了Entity需要定义Id属性,但在这种情况下,表格没有真正的主键。

我也尝试将类更改为@Embedable类型,但是我收到以下错误&#34;命名查询中的错误&#34;

下面是我使用Repository接口创建的接口。

public interface CapacityRepository extends Repository<Capacity,String> {

    public Capacity findByCapacityCount(@Param("facilityCode")String facilityCode,
                                                                                   @Param("functionName")String functionName,
                                                                                   @Param("dayOfWeek")String dayOfWeek);
}

因此,使用Spring Data JPA如何使用JPA注释和Repository接口配置一个类来查询没有主键的表?

1 个答案:

答案 0 :(得分:1)

我认为这不会起作用,但这不是由于Spring Data JPA的限制,而是JPA不允许没有主键的实体。参见JPA规范的第2.4节。