首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringDataJPA笔记(1)-基础概念和注解

所以JPA仅仅是一种规范,通过定义通用接口屏蔽实现层差异 spirng data jpaspring提供一套简化JPA开发框架,可以理解 JPA 规范再次封装抽象 二 Spring Data...里@Column设置都将不起作用 JPA规范对@Lob注解并没有说明不能同时标注@Column注解,但是实际使用Hibernate JPA不支持这中标注方式 @Id @Id 标注用于声明一个实体属性映射数据库主键列...one2one关系,关系维护端主键作为键指向关系被维护端主键,不再新建一个列 元数据属性说明: name:列名。...referencedColumnName:该列指向列列名(建表时该列作为列指向关系另一端指定列) unique: 是否唯一 nullable: 是否允许 insertable:...默认用主键值做key,如果使用复合主键,则用id class实例做key,如果指定了name属性,就用指定field值做key @OrderBy 一对多,多对多关系,有时我们希望从数据库加载出来集合对象是按一定方式排序

3.9K20

如何完美解决 `could not execute statement; SQL ; nested exception is org.hibernate.exception.SQLGramm

例如: 字段类型不匹配(例如,实体 Long 类型映射到数据库 String 类型)。 字段名称拼写错误。 缺少映射关系。 解决方案: 确保实体类和数据库字段名称和数据类型一致。...使用正确 JPA 注解(如 @Column、@Id 等)字段添加准确映射信息。...= null ) 2.2 数据库约束冲突 违反主键、唯一等约束可能导致无法插入或更新记录,进而产生 SQLGrammarException 异常。...解决方案: 确保数据库具有正确主键约束。 插入或更新数据时,确保满足表约束条件。...# application.properties 添加 spring.jpa.hibernate.ddl-auto=update 2.4 SQL 语法错误 使用原生 SQL 查询或自定义 JPQL

38610
您找到你想要的搜索结果了吗?
是的
没有找到

Spring全家桶之SpringData——Spring Data JPA

Spring Data JPA 一、介绍 常用注解 实体 测试类 相关术语 二、实战应用 :搭建Spring Data JPA项目 介绍 步骤 1....导入jar 两个核心jar 加上3个sl4jjar 2. 配置文件开启Spring Data JPA命名空间以及它约束 3. 配置文件添加Spring Data JPA配置 4....: 当前表主键所关联中间表字段inverseJoinColumns :建立另一张表中间表字段 举例: @JoinTable(name=“t_roles_menus”,joinColumns...ID对象; 二、实战应用 :搭建Spring Data JPA项目 介绍 Spring Data JPA 实现无需dao层实现类书写代码即可实现对数据库操作 使用查询语言是 HQL语言...配置文件添加Spring Data JPA配置 <!

3.7K10

JPA作持久层操作

本表创建detail_id,并连接AccountDetail表主键id @OneToOne //声明为一对一关系 AccountDetail detail;...ID:"+account.getId()+",ID:"+account.getDetail().getId()); } 可以看到日志结果:结束后会发现数据库两张表都同时存在数据。...指的是Score表uid字段对应就是当前主键,会将uid设置当前主键 //执行语句:alter table account_score add constraint xxxxx foreign...@JoinColumn(name = "tid") //存储教师ID字段,和一对一是一样,也会在当前表tid,对应Teacher表主键 Teacher teacher; //执行代码...inverseJoinColumns = @JoinColumn(name = "tid") //教师实体主键关联表字段名称,并在当前表创建tid字段作为连接关联表tid

1.1K10

Spring Data JPA 就是这么简单

jpa 全称是 Java Persistence API , 中文字面意思就是 java 持久层 API , jpa 就是定义了一系列标准,让实体类和数据库表建立一个对应关系,当我们使用...类映射到数据库常用注解分析 spring data jpa 提供了很多注解,下面我们把日常常用注解总结如下: @Entity 是一个类注解,用来注解该类是一个实体类用来进行和数据库表建立关联关系...当一个实体类使用了 mappedBy 属性,表示该类放弃主键维护,该类生成不存放和它关联类。...,把学生也保存到数据库当中,但是因为教室类不进行维护,虽然学生类保存成功,但是是失败,因为它们之间关系并没有建立起来,查看学生表新增数据我们会发现新增学生并没有教室存在。...使用spring data jpa关键字进行增删改查 使用 spring data jpa 进行数据库增删改查时候,基本上我们无需写 sql 语句,但是我们必须要遵守它规则,下面就来聊一聊:

6.8K50

Spring中国教育管理中心-Apache Cassandra Spring 数据教程十二

主键可以使用任何单一简单 Cassandra 类型或映射用户定义类型。不支持集合类型主键。 简单主键 一个简单主键实体一个分区字段组成。...由于它只有一个字段,我们可以安全地假设它是一个分区。以下清单显示了 Cassandra 定义 CQL 表,主键user_id: 示例 107....也就是说,复合主键可以由多个分区、一个分区和一个集群或多个主键字段组成。 复合可以通过 Spring Data for Apache Cassandra 以两种方式表示: 嵌入到一个实体。...平面复合主键作为平面字段嵌入到实体。...这些方法值相等语义应该与映射到数据库类型数据库相等一致。主键类可以与存储库(作为Id类型)一起使用,并在单个复杂对象中表示实体身份。以下示例显示了一个复合主键类: 示例 111.

1.7K40

Spring 全家桶之 Spring Data JPA(四)

@JoinColumn,name字段名称,referenceColumnName参照主表主键字段名称 * 客户实体类上(一对多中一这边)添加了配置,对于客户而言,具备了维护作用...语句 查看数据库,可以看到cst_linkman表,两者没有建立关系 One2ManyTest增加测试方法testSave0() // 只配置客户到联系人关系 @Test @Transactional...,查看执行SQL,相比上一次测试多了一条updatesql语句 查看数据库表,已更新,关联关系已经建立 One2ManyTest增加testSave1() // 只配置联系人到客户关系...,查看执行SQL语句,没有执行update语句,insert时候就已经建立 查看数据库表,存在,关联关系建立成功 One2ManyTest增加testSave2(),linkMan...set customer也可以建立两者之间关系,后台执行了4条SQL语句,因此可以看出在一对多关系中一一边建立维护关系可以执行较少SQL语句而完成关系建立,而多一方无需拥有关系维护

1.6K20

高级框架-springDate-JPA 第二天【悟空教程】

如果设置 false,则必须始终存在非关系。 4.4.3 @JoinColumn 作用: 用于定义主键字段字段对应关系。...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许。...* 删除主表数据: * 有从表数据引用 * 1、默认情况下,它会把字段 null,然后删除主表数据。 * 如果在数据库表结构上,字段有非约束,默认情况就会报错了。...* 2、如果配置了放弃维护关联关系权利,则不能删除(与字段是否允许 null,没有关系) * 因为删除时,它根本不会去更新从表字段了。...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许

2.5K10

mysql学习笔记(四)约束与索引

具有一些特性,这些特性定义了数据如何存储 表由列组成,我们也称为字段,每个字段描述了它所含有的数据意义,数据表设计实际上就是对字段设计 表数据按行存储 约束与索引 完整性 数据完整性(Data...它是应防止数据库存在不符合语义规定数据和防止因错误信息输入输出造成无效操作或错误信息而提出。...主键约束分为单列主键约束和复合主键约束 单列主键约束id int key; 复合主键约束 create table dbtest( id int auto_increment, name varchar...set null方式:主动权主表上,如果主表被依赖字段修改了,从表字段会将值设置Null,这里要求,字段不能有非约束。...set default方式:主动权主表上,如果主表被依赖字段修改了,从表字段会将值设置default,这里要求,字段必须有默认约束。

1.9K00

Spring学习笔记(十七)——SpringDataJpa动态查询和复杂多表操作

Specifications动态查询 有时我们查询某个实体时候,给定条件是不固定,这时就需要动态构建相应查询语句,Spring Data JPA可以通过JpaSpecificationExecutor...,他取值来源于主表主键 多对多: 中间表:中间表中最少应该由两个字段组成,这两个字段做为键指向两张表主键,又组成了联合主键 讲师对学员:一对多关系 实体关系...如果设置false,则必须始终存在非关系。 @JoinColumn 作用:用于定义主键字段字段对应关系。...从表:联系人表 * 再从表上添加 3.编写实体类,再实体描述表关系(包含关系) 客户:再客户实体包含一个联系人集合...:中间表字段关联对方表主键字段 @JoinColumn 作用:用于定义主键字段字段对应关系。

3.3K10

Spring 全家桶之 Spring Data JPA(五)

,用Set表示 角色集合上增加@ManyToMany注解,表明多对多关系 @JoinTable表示配置中间表,name表示中间表名称,joinColumns配置是当前对象中间表...,name值得值中间表主键,referencedColumnName当前类对应表主键,inverseJoinColumns:对方对象中间表 ```java @Entity @Table(name...@ManyToMany:声明表映射关系为多对多关系,targetEntity对方实体字节码 @JoinTable:配置中间表,name中间表名称, joinColumns配置是当前对象中间表...,name值得值中间表主键,referencedColumnName当前类对应表主键 inverseJoinColumns:对方对象中间表 */ @ManyToMany(targetEntity...,因为role执行往中间表执行insert操作时表已经存在了user插入数据,所以出现了主键冲突报错 因此需要user和role一方放弃维护权,修改Role实体关联关系,mappedBy

2.1K20

JPA关系映射之one-to-one、one-to-many、many-to-one和many-to-many

SpringDataJPA是Spring Data一个子项目,通过提供基于JPARepository极大减少了JPA作为数据访问方案代码量,你仅仅需要编写一个接口集成下SpringDataJPA...前言 本篇文章引导你通过Spring Boot,Spring Data JPA和MySQL 映射一对一、一对一主键、一对多,多对一,多对多、多对多额外关系。...该注释不是必须,如果没有则系统使用默认值(实体短类名)。 @Id 声明此属性为主键。...@OneToOne 一对一关联关系 @JoinColumn 指定关联字段 Spring Data JPA Repository public interface BookRepository extends...JpaRepository { } Spring Data JPA包含了一些内置Repository,实现了一些常用方法:findone,findall,save等。

1.2K30

SpringData JPA就是这么简单

1.2项目配置 pom.xml添加相关依赖 yml或者properties文件种配置对应属性 创建实体和Repository测试 参考资源: http://blog.csdn.net/pdw2009...同时,创建了实体就能够自动帮我们创建数据库表了,修改了实体字段也能够将数据表一起修改。顿时就觉得很好用了。...2.5 小总结 https://www.zhihu.com/question/53706909 引入知乎一段回答: 基本增删改查和调用存储过程通过Spring Data JPA Repository...来解决 稍微复杂查询或是批量操作使用QueryDSL或Spring Data SpecificationAPI来解决 特别特别复杂查询操作可以使用Spring Data JPA Repository...2,**如果不设置name,默认name = 关联表名称+”-“+关联表主键字段名,在上面实例3,,默认为“address_id” ** 默认情况下,关联实体主键一般是用来做,但如果此时不想用主键作为

1.6K80

jdbc java_Springdata

Spring Data Jpa则是JPA之上添加另一层抽象(Repository层实现),极大地简化持久层开发及ORM框架切换成本。...创建数据库和表 复习一下oracle建数据库和表操作吧 1.创建数据库 Jpa支持mySQL和Oracle数据库,这里使用Oracle做例子 mysql数据库也就实体主键声明和使用桥接器不同,之后章节会做具体解释...指定实体类和表之间对应关系 name:指定数据库名称 @EntityListeners 实体类增删改时候监听,创建人/创建时间等基础字段赋值 value:指定监听类 @Id 指定当前字段主键...4用户此处全查没有,也代表着删除操作成功 4.用户修改 修改时候需要全部实体数据哦,因为jpasave()是全部修改,前端少传一个字段数据库更新可能就变成null了,特别注意。...@Version注解加上后,更新操作一定要带上注解修饰字段,且要与数据库值一致。 2.

99810

Spring Data JPA(一):@id @generatedvalue设置初始值

name 声明该表主键生成策略名称,它被引用在@GeneratedValue设置“generator”值; table 声明表生成策略所持久化表名; pkColumnName 声明持久化表...,该主键生成策略所对应键值名称; valueColumnName 声明持久化表,该主键当前所生成值,它值将会随着每次创建累加; pkColumnValue 声明持久化表,该生成策略所对应主键...initialValue 声明主键初识值,默认为0 allocationSize 声明每次主键值增加大小 Spring Data JPA Repository AddressRepository public...interface AddressRepository extends JpaRepository { } Spring Data JPA包含了一些内置Repository...:one-to-one关联 JPA关系映射系列二:one-to-one主键关联 JPA关系映射系列三:one-to-many和many-to-one JPA关系映射系列四:many-to-many

1.8K20

springboot整合H2(内置一个月对JPA学习)

什么是JPA JPA是Java Persistence API简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表映射关系,并将运行期实体对象持久化到数据库。...总的来说,JPA包括以下3方面的技术: ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据形式,元数据描述对象和表之间映射关系,框架据此将实体对象持久化到数据库; API 用来操作实体对象...spring.datasource.data=classpath:data.sql # 如果不指定会在内存 关闭就没了 #指定数据库种类,这里 file意思是文件型数据库 spring.datasource.url...,两边表都创建了 说明jpa也会自动建表扫描到@Entity)时候 测试接口 目前没有数据,我们控制台添加几条 ---- 重新测试接口 新增操作 /** * 测试jpa新增...DETACH 如果你要删除一个实体,但是它有无法删除,你就需要这个级联权限了。它会撤销所有相关关联。

3.4K10

JPA实体注解

标注于属性上,有很多功能,例如指定长度、是否,列名以及对应到数据库类型等,如@Column(length,nullable,name)   例如,我们string对应到数据库text就可以这样写...@Lob声明属性对应数据库字段大文本类型,可以存放大数据(文本和字节) @Transient不成为持久化字段及不跟数据库字段形成映射 @Basic(fetch=FetchType.LAZY)...(与generator值一样),sequenceName指定数据库定义序列名字,allocationSize指定序列每次增长1 @Column 描述数据库字段定义,具有一下属性  name...表示一个多对一映射,该注解标注属性通常是数据库  optional:是否允许该字段null,该属性应该根据数据库约束来确定,默认为true  可选  fetch:表示抓取策略,...例如,实体Order有一个user属性来关联实体User,则Orderuser属性一个,  其默认名称为实体User名称+下划线+实体User主键名称  @JoinTable(name =

3.8K70

芋道 Spring Boot MongoDB 入门

MongoDB 许多概念在 MySQL 具有相近类比。本表概述了每个系统一些常见概念。 对于不熟悉胖友,可以先看下该表,然后开始本文旅程。...基于方法名查询」小节,我们已经提到: Spring Data ,支持根据方法名作生成对应查询(WHERE)条件,进一步进化我们使用 JPA ,具体是方法名以 findBy、existsBy、countBy...具体规则,Spring Data JPA —— Query Creation》 文档,已经详细提供。...它允许创建动态查询,而无需编写包含字段查询。...Example API 一共包含三部分: Probe :含有对应字段实体对象。通过设置该实体对象字段,作为查询字段。 注意,Probe 并不是一个类,而是实体对象泛指。

2.5K10

什么是JPA?Java Persistence API简介

主键 JPA主键是用于唯一标识数据库每个对象字段主键可用于引用对象并将对象与其他实体相关联。每当您在表存储对象时,您还将指定要用作其主键字段。...清单6,我们告诉JPA要使用哪个字段作为Musician主键。...默认情况下,此配置假定主键将由数据库设置 - 例如,当字段设置表上自动递增时。 JPA支持生成对象主键其他策略。它还有用于更改单个字段名称注释。...JPA实体关系 简单地使用原始字段持久化对象只是方程式一半。JPA具有管理彼此相关实体能力。...如果您希望Spring应用程序提供JPA支持,清单11显示了要包含依赖项。

10.1K30
领券