java - 如何使用spring data jpa查询没有主键的表

标签 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;

}

当我的应用程序启动时,出现“没有为实体指定标识符”的错误。我低估了实体需要定义 Id 属性,但在这种情况下,表没有真正的主键。

我还尝试将类更改为 @Embedable 类型,但收到以下错误“命名查询中的错误”

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

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 接口(interface)配置一个类来查询没有主键的表?

最佳答案

我认为这行不通,但这不是由于 Spring Data JPA 的限制,而是 JPA 不允许没有主键的实体。请参阅 JPA 规范第 2.4 节。

关于java - 如何使用spring data jpa查询没有主键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105357/

相关文章:

java - jtable - 访问行后面的对象

Java应用程序导出

java - Spring MVC - 在构造函数内重定向

java - 当有两个相同名称和不同类的 bean 时,如何通过名称获取正确的 bean

java - 无状态 EJB 之间的持久上下文

java - 按钮未出现在 JFrame 中

java - SpringBoot 1.5.x + 安全性 + OAuth2

java - 是否有必要为每个错误创建用户定义的异常

postgresql - 在 postgres 和 Hibernate 中使用主键序列时出错

jpa - Camel JPA - 没有名为 camel 的 EntityManager 的持久性提供程序