当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Data JPA查询没有主键的表

酆光熙
2023-03-14

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

}

当我的应用程序启动时,我得到一个错误,“没有为实体指定标识符”。我强调了Entity需要定义Id属性,但在本例中,表没有真主键。

我还尝试将类更改为@Embedbable类型,但我得到以下错误“Errors in named Queries”

下面是我使用存储库接口创建的接口。

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注释和存储库接口的类来查询一个没有主键的表呢?

共有1个答案

须巴英
2023-03-14

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

 类似资料:
  • 使用JPA2。0(通过Hibernate 4),我可以使用EntityManager在数据库中查询查询条件为主键的记录。查找(java.lang.Class entityClass,java.lang.Object primaryKey)。但是,如果查询条件不是主键(例如,选择city值为“london”的所有记录),我是否必须创建一个TypedQuery并显式提供SQL语句?我应该采取什么最佳做

  • SpringDataJpa中 Specification怎样使用in查询 实体类Menu.java如下 想通过roles属性做in查询,代码如下 错误如下: Parameter value [com.appmtce.pojo.entity.role.Role@20f81e2a] did not match expected type [java.util.Collection (n/a)] 我的S

  • 问题内容: 我有以下课程: 当我初始化Spring Data JPA时,出现错误: 问题: Spring Data JPA是否不支持对主键的子集进行查询? 还是我需要为此实现自定义存储库方法? 问题答案: 好的,我还尝试使用以下方法执行此操作: 这确实给了我一个不同的错误消息a ,这向我暗示Spring Data JPA无法为构建查询。我改为对该查询方法进行了自定义实现: …而且, 它起作用了!

  • 我在Cassandra中有一个表,定义为 我在这张表中插入了数十亿条记录。现在我想用CQL查询表 null 谢谢!

  • 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 我想使用QueryDSL运行下面的查询 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 从测试t样本(80)中选择,其中t.test_id=01,t.test _ suite _ id = 02 其中条件是动态的,我使用qu

  • 我正在使用100个实体(使用JHipster)设置一个新的Spring Boot API,我的问题是:鉴于我有一组存储库层方法,我希望我的所有存储库都能够调用这些方法。 我已经尝试制作所有接口来扩展('RepositoryQuery'是我默认的自定义接口名称后缀),然后使用特定于实体的类。请注意,所有的类扩展了一个泛型实现类,名为。 请注意,给定正则表达式中的“.*”代表我的持久实体集中的任何实体