【问题标题】:How to query a table without a primary key using spring data jpa如何使用spring data jpa查询没有主键的表
【发布时间】:2014-08-03 13:54:30
【问题描述】:

有一个简单的查询,我只需要运行一个选择。下面是示例 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>

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

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

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

}

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

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

下面是我使用 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 接口的类来查询没有主键的表?

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 这正是我刚刚发生的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2018-09-24
  • 2017-10-09
  • 2014-12-02
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
相关资源
最近更新 更多