在休眠弹簧数据的JPA显示误差修改(Show erros in hibernate spring-d

2019-11-03 08:31发布

我使用的是春天的数据JPA的Spring MVC的项目工作和休眠,我使用,我在扩展JpaRepository这样的接口中声明的原生查询:

public interface I_Table_one extends JpaRepository<table_id, Long>{

    @Query(value ="select name_att, .... .... various att"
            + "from Table_one "
            + "where id_table = 4 ", 
           nativeQuery = true)
    public List<Table_one_Mapped_Class>serachInTable();

这种方法不具有太大的意义仅仅是一个例子,我有一个,有这样的选择我只是一个知道80点的属性是有办法知道什么列名我有错。

我的映射类:

@Entity
@Table(name="Table_one")
public class Table_one_Mapped_Class implements Serializable {

    private static final long serialVersionUID = 1L;

////ID///////
                @Id
                @Column (name="ID_TABLE", nullable=false)
                private Long idInMyTable;
////ID///////
 .....other columns

这是我的Hibernate属性配置:

jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
           jpaProperties.put("hibernate.format_sql", true);
           jpaProperties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy");
           jpaProperties.put("hibernate.show_sql", true);

我得到以下错误,当我试图从我的控制器类的html页面打印值这样${value}

我在控制台中此错误:

警告:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL错误:17006,SQLSTATE:99999
错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 无效的列名称

当我尝试这个错误打开网页

请求处理失败; 嵌套的例外是org.springframework.orm.jpa.JpaSystemException:org.hibernate.exception.GenericJDBCException:无法执行查询; 嵌套的例外是javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:无法执行查询

在控制台中说:

无效的列名

但我怎么能知道什么样的列有无效的名称,是在我把接口方法查询,或者是属性的一个无效的名称在我的映射类

我已经看到了类似的问题,什么人贴,我需要为工作选择在选择所有列,但为什么我只在我的选择需要几列,我需要选择所有的列,即使不需要它们?

Answer 1:

如果你使用Spring数据JPA> 1.4,您可以创建包含完全相同您从表(S)所需要的属性的DTO级。

样本-DTO和-Query是这样,那么:

查询:

@Query("select new de.mypackage.mymodel.dto.myDTO(name_Att, att2,, att3)" +
        " from Table_One " +
        "where ...")
List<myDTO> getAttributesFromBigTable(String name_Attribute, 
                String attribute2, String attribute3);

该DTO:

    public class myDTO {

    private String name_attr;
    private String attr2;
    private String attr3;

    public myDTO(String name_attr, String attr2, String attr3) {
        this.name_attr = name_attr;
        this.attr2 = attr2;
        this.attr3 = attr3;
    }

    public String getName_Attr() {
       return name_attr;
    }
...
}


文章来源: Show erros in hibernate spring-data jpa