# insleton-admin **Repository Path**: skmbw/insleton-admin ## Basic Information - **Project Name**: insleton-admin - **Description**: hibernate 6.5 学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-25 - **Last Updated**: 2025-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目简介 ## 这是一个hibernate 6.5.2的学习项目 ## hibernate createQuery is not valid without an active transaction (Current status: NOT_ACTIVE) * session 上下文设置不正确 * thread,就是当前线程,不是spring托管的,不应该设置这个 * current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext ## hibernate 和 jpa整合的关键 * 将hibernate和jpa 整合之后使用。hibernate session的获取,需要使用entityManager.unwrap(Session.class) * 否则会找不到事务。 * 或者是直接使用纯hibernate,不使用jpa ## SQL的查询 * 1、Named SQL查询也要返回实体类,不需要使用addScalar和转换transformer * 2、SQL查询返回VO,需要设置转换transformer * 3、命名SQL,获取SQL语句,转换为普通SQL语句查询,需要转换transformer。 ## jpq SQL查询,返回普通VO,还是不能使用命名sql。命名sql要返回实体类。 * 可以给一个POJO标注@Entity,但是不对应实际的表。hibernate使用它来映射查询结果 * 已经可以了,就是创建Query的时候,不要设置entityClass参数 ## hibernate 启动找不到dialect * 是因为naocs没有启动? * 好像是因为公钥查询的配置,jdbc URL * &allowPublicKeyRetrieval=true ## 找不到 cannot find persister * 是因为实体类不和主类在同一个包下,需要使用@EntityScan配置扫描实体类的包 ## hibernate出现找不到配置的问题 * Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) * 下面这个配置都是过时的。 ```yaml jakarta: persistence: jdbc: url: jdbc:mysql://localhost:3306/cyyz_cloud?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true username: root password: Cyyz202205 hibernate: dialect: org.hibernate.dialect.MySQLDialect ``` * 是因为打包出错了,没有将配置文件和静态资源打包进去。 * idea有时候复制有问题。在idea内复制一个小的变量名。就可以复制外面的文本了。