JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

摘要:
这个问题是由HQL语句引起的,它导致内部查询对象为空,不能作为空值处理。解决方案:检查HQL声明。
JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

今天程序中遇到的
错误一
org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: com.hibernate.SubStation.bays

错误解决方法
org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: org.svse.org.model.Order.orderItems

在用annotation做数据库映射一对多和多对一的时候要注意:因为这个问题只有在用annotation的时候才有,用xml文件的时候就没有在一对多关系映射中

一的一方直接写Set就可以不用指定相应的元素类型!!
请 检查orderItems这个属性是否使用了泛型,   如:Set<OrderItem>.
如 果未使用泛型,请在OneToMany注释中使用targetEntity指定元素的类型

如果你用的是:List<OrderItem> 请改为Set<OrderItem>

错误二
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.hibernate.Bay.group in com.hibernate.SubStation.bays
错误解决方法
在用annotation做数据库映射一对多和多对一的时候要注意:
@OneToMany(mappedBy = "news_type", cascade = CascadeType.ALL,fetch = FetchType.LAZY)  这里的mappedBy 要对应
@ManyToOne
@JoinColumn(name="news_type", nullable=true, insertable = true, updatable = true)
private NewsType newsType;的NewsType对象名,也就是newsType而不是字段名news_type。

错误三
node to traverse cannot be null!
出现这种问题是因为HQL语句出现问题,引起内部查询对象为空,无法处理为空值引起的。解决方法,检查HQL语句(尤其是关键字)。

免责声明:文章转载自《JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows安装mysql8.0KVM/QEMU/qemu-kvm/libvirt 概念全解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

读取并监控文件的变化

读取并监控文件的变化 ASP.NET Core 具有很多针对文件读取的应用。比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取。如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目标文件的内容并对请求予以响应。在一个ASP.NET Core MVC应用中,针对View的动态编译会涉及到根据预定义的路径映射关系来读取...

ceph分布式存储简介

一、Ceph简介: 什么是分布式存储? 我在一个环境当中,有很多很多的服务器,服务器上也有它自己很多的硬盘,我通过软件的形式把若干服务器都收集起来,部署成一个软件,在这个逻辑的软件里可以同时看到我若干服务器的磁盘的空间,这个逻辑的软件对外就像是一个整体一样,这个整体叫storage spool,用户呢有一天想用这个空间了,用户直接去对应这个存储池提供的接口...

spring boot: spring-data-jpa (Repository/CrudRepository) 数据库操作, @Entity实体类持久化

SpringBoot实现的JPA封装了JPA的特性, Repository是封装了jpa的特性(我是这么理解的) 1在pom.xml引入mysql, spring-data-jpa依赖 2.在src/main/resource/下新建applicatoin.properties配置文件,并配置数据库连接 3.在application.properties配...

Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题

几天在用springboot开发项目,在开发的过程中遇到一个问题hibernate在执行sql时,总会提示表不存在。 寻找之后发现,建表时,采用默认设置。hibernate会把大写统一转换成下划线加小写。且 mysql在linux下大小写敏感。 解决: 1. 尝试修改mysql的cnf文件,改成不区分大小写。修改完成之后发现问题并没有解决,还产生了新的问...

【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中

执行了save()方法  sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提交事务,所以这一条语句已经插入到数据库了,但是当前不可见。 所以最后可以采用 this.userRepository.saveAndFlush() 方法,让它...

Spring Data JPA:解析JpaSpecificationExecutor &amp;amp; Specification

源码 在前面关于SimpleJpaRepository的文章[地址]中可以得知,SimpleJpaRepository间接实现了JpaSpecificationExecutor接口,本文就详细探究一下该接口。 JpaSpecificationExecutor的定义如下: /** * Interface to allow execution of {@li...