hibernate

org.hibernate.LazyInitializationException异常解决办法

别等时光非礼了梦想. 提交于 2020-11-24 03:14:59
org.hibernate.LazyInitializationException异常 failed to lazily initialize a collection...的解决方案 使用hibernate从一方获取多方信息的时候发生 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.haowei.carmanager.model 这个异常与hibernate加载关联对象的2种方式有关,一个是懒加载方式,一个是立即加载方式. 一. 原先的配置 1. 一方中的多方: @OneToMany(mappedBy = "carFirm",cascade = CascadeType.ALL,fetch = FetchType.LAZY) private Set<CarBrandType> brandTypeSet;//汽车厂商与汽车品牌为一对多的关系 2. 多方中的一方 @ManyToOne(cascade = CascadeType.ALL,optional = false) @JoinColumn(name="brandid",referencedColumnName = "carfirm_id") private CarFirm carFirm

Hibernate入门(四)—— 查询

巧了我就是萌 提交于 2020-11-24 00:00:32
一、Hibernate查询 1.Hibernate检索(查询)方式的分类 OID检索 :根据主键查询,get/load 对象导航检索 :通过一个对象获得其关联对象.【重点】 Category category = session. get( Category. class, 1); Set < Product > products = category. getProducts(); HQL检索 :HQL,Hibernate Query Language(Hibernate查询语言,语法与SQL类似,但是又是面向对象的 ) 【掌握】 QBC检索 :QBC,Query By Criteria(条件查询,更加面向对象的查询方式) 【掌握】 SQL检索 :SQL,使用原生SQL进行查询 【了解】 2.HQL查询 2.1概述 ​   HQL:Hibernate Query Language。 是面向对象(在sql里面的列名在hql里面应该写属性名)的查询语言, 它和SQL查询语言有些相似。 ​ 语法: String hql =... ​ Query query = session.createQuery(hql); list(); 查询多个 uniqueResult();查询一个 ​ 原则: 把表名改成类名, 把数据库的列改成Java里面的属性名 2.2基本查询 2.2.1查询所有

Spring @Valid

我与影子孤独终老i 提交于 2020-11-23 20:50:39
@Valid基本用法 强烈推荐如果要学习@Valid JSR303, 建议看这里的API Bean Validation规范 ! Controller控制器中在需要校验的实体类上添加 @Valid 即可使用JSR303校验(前提记得添加hibernate-validator相关jar,<mvc:annotation-driven/>); modelMap是为了将校验失败信息写回到request属性中返回给JSP页面展示 @RequestMapping("/demo2") public String test2(@Valid User user, BindingResult result, ModelMap modelMap){ System.out.println(user); List<FieldError> fieldErrors = result.getFieldErrors(); for (FieldError e:fieldErrors) { System.out.println(e.getDefaultMessage()); //验证不通过的信息 System.out.println(e.getField()); modelMap.addAttribute(e.getField(),e.getDefaultMessage()); } return "test"; }

springMvc中的校验框架@valid和@validated

邮差的信 提交于 2020-11-23 20:50:09
springMvc 中的校验框架 @valid 和 @validated 在学习 springMvc 的过程中要拦截请求,校验数据,因此用到了校验框架,并进行了比较。 1. 比较 @Valid 是使用 hibernate validation 的时候使用 @Validated 是使用 spring Validator 校验机制使用 2. 实现 java 的 jsr303 声明了 @valid 的接口, hibernate-validator 对其进行了实现 3. 依赖 在使用 maven 框架整合时,需要引入的依赖部分如下: <span> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.1.Final</version> </dependency> </span> 4.JSR303 定义的校验类型 4.1 空检查 @Null : 验证对象是否为 null

如何理解mybatis框架?

浪子不回头ぞ 提交于 2020-11-21 11:10:00
https://www.cnblogs.com/weibanggang/p/9759018.html 特点: mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。 相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化; mybatis为半自动化,需要自己书写sql语句,需要自己定义映射。增加了程序员的一些操作,但是带来了设计上的灵活,并且也是支持hibernate的一些特性,如延迟加载,缓存和映射等;对数据库的兼容性比hibernate差。移植性不好,但是可编写灵活和高性能的sql语句。 简单易学 :本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 灵活 :mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。 解除sql与程序代码的耦合 :通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 提供映射标签,支持对象与数据库的ORM字段关系映射 提供对象关系映射标签

ERROR: The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone.

丶灬走出姿态 提交于 2020-11-19 11:04:59
ERROR: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. 摘要背景 在Hibernate学习过程中写的一个小测试出现了一点小问题,在以前的学习JDBC的过程中也出现过,属于是Java与数据库的连接问题;我用的是_Mysql8.0.17_ 错误展示: 十一月 17, 2020 10:34:57 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 0, SQLState: 01S00 十一月 17, 2020 10:34:57 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: The

框架的认识

♀尐吖头ヾ 提交于 2020-11-18 04:25:37
参考: 框架的认识 框架: 1.是什么:框架就是一套规范。既然是规范,你使用这个框架就要遵守这个框架所规定的约束。在Java开发中, 框架是用一套规则 + 一群jar包来表示的 。 内容理解:框架是一套规范。具体到Java,是一套规则+一群jar包。 2.为什么:我们为什么要使用框架? (1)原因:在我们的开发中,如果一个类的名字,A同学起名字叫A.java B同学起名教B.java,可是其实这两个类的功能是一样的,但是就是因为没有规范,所以造成了混乱,不利于 团队合作与开发 ,如果使用了框架,框架就会对类的名字有约束,比如Struts,控制类我们都起名字叫**Action 这样很容易让人看明白功能。 (2)意义:框架不仅仅只完成这些简单的约束,更重要的是,框架为我们 封装好了一些冗余 ,且重用率低的代码。并且使用反射与动态代理机制,将 代码实现了通用性 。比如如果你说servlet开发,你需要在servlet获取表单的参数,每次都要获取很麻烦,而struts底层就使用反射机制和拦截器机制帮助我们获取表单的值,我们就不用每次都手写那些代码了,简化了开发,当然你必须遵守一些规定来配置。还有比如hibernate,它提供了一些通用性很强的对数据库的增删改差,如果你使用jdbc每次做一些简单的crud的时候都必须写sql,但使用hibernate就不需要这么麻烦了,直接save