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

Spring数据 JPA - JDBC 类型的无方言映射:2003 年

颛孙俊
2023-03-14

我得到以下错误

JDBC 类型的无方言映射:2003 年;嵌套的异常是组织Hibernate映射异常:JDBC 类型没有方言映射:2

回购代码如下

    String chrPackageId = "select\n" +
         "\tcombination_hr_id as \"chRuleId\",\n" +
         "\tcombination_hr_name as \"chRuleName\", \n" +
        "\tholdingrule_list as \"selectedRules\"\n" +
         "from\n" +
         "\tcombination_holding_rule chr\n" +
         "where\n" +
         "\tpackage_id =:packageId";

@Query(value=chrPackageId,nativeQuery = true)
List<CHRfromPackageIdDTO> repoCHRFromPackageId(int packageId);

DTO 对象如下所示

public interface CHRfromPackageIdDTO {

    int getChRuleId();
    String getChRuleName();
    Integer[] getSelectedRules();
}

我们使用 Postgres DB,实际上在获取整数 [] 值时存在一些问题。

Stackoverflow中的其他答案是特定于Hibernate的。但我们使用spring数据jpa

共有1个答案

洪鹏海
2023-03-14

实体类



import com.vladmihalcea.hibernate.type.array.IntArrayType;
import com.vladmihalcea.hibernate.type.array.StringArrayType;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.*;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@TypeDefs({
        @TypeDef(
                name = "string-array",
                typeClass = StringArrayType.class
        ),
        @TypeDef(
                name = "int-array",
                typeClass = IntArrayType.class
        ),
        @TypeDef(name = "json", typeClass = JsonStringType.class),
        @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
})
@Entity
@Table(name="combination_holding_rule")
public class CombHoldingRule {

    @Id
    @Column(name="combination_hr_id")//Checked
    private Integer combHoldingRuleId;
    @Column(name="combination_hr_name")//Checked
    private String combHoldingRuleName;
    @Column(name="jurisdiction_id")//Checked
    private Integer  jurisdictionId;
    @Column(name="function_group_id")//Checked
    private Integer  functionGroupId;
    @Column(name="overall_netting_type")//Checked
    private String overallNettingType;
    @Column(name="package_id")//Checked
    private Integer  packageId;

    @Type(type = "int-array")
    @Column(
            name = "holdingrule_list",
            columnDefinition = "integer[]"
    )
    private int[] holdingRuleList;

}

在存储库中

@Query(value="from CombHoldingRule where packageId=:packageId")
    List<CombHoldingRule> repoCHRFromPackageId(@Param("packageId") int packageId);

我将JPAQuery的结果放入实体中,然后在服务层中执行以下操作

public List<CHRfromPackageIdDTO> getCHRFromPackageIdService(int packageId) {
       
        List<CombHoldingRule> combHoldingRuleList = combinationHRrepo.
                                           repoCHRFromPackageId(packageId);
        List<CHRfromPackageIdDTO> combDTO = new ArrayList<>();
        for ( CombHoldingRule combHoldingRule : combHoldingRuleList) {            
            CHRfromPackageIdDTO temp = new CHRfromPackageIdDTO(combHoldingRule.getCombHoldingRuleId(),
                    combHoldingRule.getCombHoldingRuleName(),
                    combHoldingRule.getHoldingRuleList());
            combDTO.add(temp);
        }       
        return combDTO;
    }

也请检查这里

注意:我认为,这是一种工作,但我不确定,如何直接将值从本地查询中提取到自定义Pojo中,而不是实体类中。我真的很感激,如果有人张贴的答案。我会接受这个答案。

 类似资料:
  • 问题内容: 尽管此标题存在一些问题,但我的查询并没有从那些线程中解决。 我正在通过postgres中的hibernate执行递归查询(与子句一起使用),查询结果也包含搜索路径 例如:查询结果的一行 hibernate状态是否具有String以外的任何映射类型,类似于或。 下面是查询输出的示例 Hibernate抛出异常 原因:org.hibernate.MappingException:没有JDB

  • 虽然这个标题存在一些问题,但我的查询无法从这些线程中解决。 我在postgres中通过hibernate执行递归(使用with子句)查询,查询结果也包含搜索路径 ex:一行查询结果 Hibernate是否具有除字符串以外的的任何映射类型,类似于或。 下面是查询输出的示例 Hibernate正在抛出异常 原因:org.hibernate.MappingException:没有JDBC类型的方言映射:

  • 问题内容: 我正在使用MySQL作为数据库的Spring JPA应用程序。我确保已加载所有spring-jpa库,hibernate和mysql-connector- java。 我正在运行mysql 5实例。这是我的application.properties文件的摘录: 执行集成测试时,spring可以正常启动,但无法创建hibernate的SessionFactory,但以下情况除外: 我认

  • 我正在开发一个Spring JPA应用程序,使用MySQL作为数据库。我确保加载了所有spring-jpa库、hibernate和mysql-connector-java。 期待您的回答,谢谢! 顺便说一句,应用程序已经在使用spring Boot了。

  • 我在启动Web服务器时遇到上述错误。我用 enum 映射和 enity 类。类似... 是什么问题,我在配置中遗漏了什么吗?谢谢!!