有一个简单的查询,我只需要运行一个选择。下面是示例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接口配置一个类来查询没有主键的表?
答案 0 :(得分:1)
我认为这不会起作用,但这不是由于Spring Data JPA的限制,而是JPA不允许没有主键的实体。参见JPA规范的第2.4节。