首页 > 解决方案 > 如何让spring使用postgresql识别第一个大写字母

问题描述

我有一个问题,我怎么能在春天用第一个大写字母识别我的表,是在 postgresql 中制作的

@Entity
@Table(name="System_user") 

public class Dashboard { 

    @Id
    @Column(name = "username")
    String username;

get..
set...
}

它会产生一个错误,我将其更改如下所示

@Table("\"System_user\"")

但他还是不认识我

标签: springpostgresqlhibernatejpa

解决方案


正如我们在评论中讨论的那样,问题出在方言中。
目前最新的方言 -org.hibernate.dialect.PostgreSQL95Dialect

这个问题解决了这个方言: <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>


回答您的 HQL 代码:

我建议使用 TypedQuery,因为它不仅返回一个列表,还返回你的对象列表。

此外,您正在使用相同的会话来传输数据。这对程序不利。总是喜欢Open session - transfer data - close session

试试这个代码:


public List<Vw_dh_assay> listAssayReport(double year, String project_id, String hole_id) {
        List<Vw_dh_assay> list = new ArrayList<>();
        Session session;

        try {
            session = this.sessionFactory.openSeesion();
            TypedQuery<Vw_dh_assay> query = session.createQuery("from Vw_dh_assay where year = :year AND project_id = :project_id  AND hole_id = :hole_id", Player.class);
            query.setParameter("year", year);
            query.setParameter("project_id", project_id);
            query.setParameter("hole_id", hole_id);

            list = query.getResultList();

            System.out.println(list);

            session.clear();
            session.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return list;
    }

推荐阅读