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

在springboot中使用embeddedId中的序列

在Spring Boot中使用EmbeddedId中的序列,可以通过以下步骤实现:

  1. 首先,创建一个嵌入式主键类(EmbeddedId class),用于表示复合主键。该类应该包含所有用于唯一标识实体的属性,并使用@Embeddable注解进行标记。例如:
代码语言:txt
复制
@Embeddable
public class MyEmbeddedId implements Serializable {
    private Long id;
    private String name;
    
    // 构造函数、getter和setter方法
}
  1. 在实体类中使用嵌入式主键。在实体类中,使用@EmbeddedId注解将嵌入式主键类应用于实体的主键字段。同时,使用@GeneratedValue注解指定主键的生成策略为序列(Sequence)。例如:
代码语言:txt
复制
@Entity
public class MyEntity {
    @EmbeddedId
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_sequence_generator")
    @SequenceGenerator(name = "my_sequence_generator", sequenceName = "my_sequence")
    private MyEmbeddedId id;
    
    // 其他属性和方法
}
  1. 配置序列生成器。在Spring Boot的配置文件(如application.properties或application.yml)中,配置序列生成器的相关信息。例如,使用PostgreSQL数据库的序列生成器,可以在配置文件中添加以下配置:
代码语言:txt
复制
spring.jpa.properties.hibernate.id.new_generator_mappings = false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.jpa.properties.hibernate.hbm2ddl.auto = update
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true
spring.jpa.properties.hibernate.format_sql = true
spring.jpa.properties.hibernate.show_sql = true
spring.jpa.properties.hibernate.use_sql_comments = true
spring.jpa.properties.hibernate.type = trace
spring.jpa.properties.hibernate.id.optimizer.pooled.prefer_lo = true
spring.jpa.properties.hibernate.id.optimizer.pooled.prefer_sequence_per_entity = true
spring.jpa.properties.hibernate.id.optimizer.pooled.initial_value = 1
spring.jpa.properties.hibernate.id.optimizer.pooled.increment_size = 100
spring.jpa.properties.hibernate.id.optimizer.pooled.optimizers = pooled-lo, pooled
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.min_lo = 1
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.max_lo = 100
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.table = hibernate_sequences
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.column = next_val
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.primary_key = sequence_name
spring.jpa.properties.hibernate.id.optimizer.pooled.hi_lo.primary_key_value = my_sequence
  1. 使用嵌入式主键。在业务逻辑中,可以使用嵌入式主键来操作实体对象。例如,保存实体对象到数据库:
代码语言:txt
复制
@Autowired
private MyEntityRepository myEntityRepository;

public void saveEntity() {
    MyEmbeddedId id = new MyEmbeddedId();
    id.setId(1L);
    id.setName("example");
    
    MyEntity entity = new MyEntity();
    entity.setId(id);
    // 设置其他属性
    
    myEntityRepository.save(entity);
}

以上就是在Spring Boot中使用EmbeddedId中的序列的步骤。在这个过程中,我们使用了嵌入式主键类来表示复合主键,并配置了序列生成器来生成主键值。这样,我们就可以在业务逻辑中使用嵌入式主键来操作实体对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RabbitMQ死信队列SpringBoot使用

正常业务队列消息变成了死信消息之后,会被自动投递到该队列绑定死信交换机上(并带上配置路由键,如果没有指定死信消息路由键,则默认继承该消息正常业务时设定路由键)。...会读取Spring容器类型为Queue和Exchangebean进行队列和交换机初始化与绑定。...,使消息无法被消费,直到消息队列时间达到设定存活时间。...还可以消息投递之前,给每条消息设定指定过期时间。...image.png 向队列投递消息 ? image.png 从结果可以看出,当投递第3条消息时候,RabbitMQ会把最靠经被消费那一端消息移出队列,并投递到死信队列。 ?

1.1K20

SpringBoot ( 十一 ) :SpringBoot mongodb 使用

mongodb是最早热门非关系数据库之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网居多。...MongoDB对于关系型数据库里表,但是集合没有列、行和关系概念,这体现了模式自由特点。 MongoDB一条记录就是一个文档,是一个数据结构,由字段和值对组成。...到此springboot对应mongodb增删改查功能已经全部实现。...多数据源mongodb使用 多mongodb数据源情况下,我们换种更优雅方式来实现 1、pom包配置 添加lombok和spring-boot-autoconfigure包引用 <dependency...Java代码工具,通过使用对应注解,可以在编译源码时候生成对应方法。

1.3K20

你知道springboot如何使用WebSocket吗

想要实现浏览器主动推送有两种主流实现方式: 轮询:缺点很多,但是实现简单 websocket:浏览器和服务器之间建立 tcp 连接,实现全双工通信   springboot 使用 websocket...这一篇实现简单 websocket,STOMP 下一篇讲。...注意:如下都是针对使用 springboot 内置容器 二、实现 1、依赖引入   要使用 websocket 关键是@ServerEndpoint这个注解,该注解是 javaee 标准注解,tomcat7...及以上已经实现了,如果使用传统方法将 war 包部署到 tomcat ,只需要引入如下 javaee 标准依赖即可: javax...serverEndpointExporter(){ return new ServerEndpointExporter(); } } 3、申明 endpoint   建立MyWebSocket.java类,该类处理

2.8K40

SpringBoot如何使用国际化配置

阅读springboot官方文档spring-boot-reference.pdf过程,发现springboot国际化支持也是非常不错。...虽然项目采用了前后端分离,最终通过前端js代码来实现了国际化,但是阅读springboot解决方式之后,不得不说springboot在这个问题上还是非常便捷。...idea,resources下面创建一个i18n目录来存放这些资源,为什么是i18n呢,i18n(其来源是英文单词 internationalization首末字符i和n,18为中间字符数)是“...就基本可以使用了,只需要通过修改浏览器语言首选项即可: ?...可见,通过springboot来实现国际化配置还是非常方便。但是目前前后端大多数采用分离架构,因此这个功能也不再像当年struts时代会有非常多的人来使用

83120

SpringBoot实践AOP编程

使用注解@Aspect来定义切面(注:需要在应用注解@Aspect类上使用注解@Component标识这是一个容器管理Bean),使用注解@Pointcut来定义切入点,使用注解@Before,@After...ProceedingJoinPoint也是JoinPoint类型),并且@AfterReturning通知还可以获取目标方法返回值,@AfterThrowing通知可以获取目标方法抛出异常。...Spring提供拦截器机制跟ServletFilter机制很像,但是他们属于不同范畴(后者属于Servlet规范内容,而前者属于Spring框架提供支持)。...【参考】 aop-pointcuts-combining Spring AOP - 注解方式使用介绍 原来这才是Spring Boot使用AOP正确姿势 SpringBoot使用AOP——...通知参数 AOP通知获取数据(参数、返回值、异常) Spring AOP使用:自定义注解、通知(简单使用和原理了解) SpringBoot之Filter注册 优雅使用SpringBoot

25220

springboot工程创建定时任务,使用quartz

开篇 这篇只介绍怎么用,不说原理;先说一种常用定时任务方法;使用schedule定时任务最常用使用Springboot自带schedule;使用springboot自带schedule实现定时任务...,定时任务具体逻辑方法加上注解@Schedule("${cron表达式}")使用Quratz:Quartz 是一个完全由 Java 编写开源作业调度框架,为 Java 应用程序中进行作业调度提供了简单却强大机制...Quartz 实现了作业和触发器多对多关系,还能把多个作业与不同触发器关联。 创建springboot工程: IDEA基于springboot 2.7....添加两个BeanJobDetail 表示一个具体可执行调度程序,Job 是这个可执行程调度程序所要执行内容,另外 JobDetail 还包含了这个任务调度方案和策略。...Trigger中使用withSchedule方法加入调用队列;@Configurationpublic class JobConfiguration { @Value("${quartz.push.cron

3.1K10

SpringBoot处理跨域

浏览器先询问服务器,当前网页所在域名是否服务器许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式XMLHttpRequest请求,否则就报错。...Access-Control-Request-Method:接下来会用到请求方式,比如PUT Access-Control-Request-Headers:会额外用到头信息 预检请求响应 服务收到预检请求...spring-webmvc:CorsFilter spring-webflux:CorsWebFilter springcloud-gateway集成是webflux,所以这里使用是CorsWebFilter...gmall-gateway编写一个配置类,并且注册CorsWebFilter: @Configuration public class CorsConfig { @Bean public...,不要写*,否则cookie就无法使用了 config.addAllowedOrigin("http://127.0.0.1:1000"); // 允许头信息

1.6K00

TomcatSpringBoot是如何启动

包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat,同时也将展开学习下Tomcat源码,了解Tomcat...应用将要使用Environment(包括配置要使用PropertySource以及Profile), //并遍历调用所有的SpringApplicationRunListenerenvironmentPrepared...//我们可以实现自己ApplicationRunner或者CommandLineRunner,来对SpringBoot启动过程进行扩展。...另外我们根据setConnector源码可以知道,连接器(Connector)是设置service下,而且是可以设置多个连接器(Connector)。...输出banner 创建上下文 预处理上下文 刷新上下文 再刷新上下文 发布应用已经启动事件 发布应用启动完成事件 而启动Tomcat就是第7步“刷新上下文”;Tomcat启动主要是初始化2个核心组件

1.6K20

TomcatSpringBoot是如何启动

前言 我们知道SpringBoot给我们带来了一个全新开发体验,我们可以直接把web程序打成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看...SpringBoot是如何启动Tomcat,同时也将展开学习下Tomcat源码,了解Tomcat设计。...应用将要使用Environment(包括配置要使用PropertySource以及Profile), //并遍历调用所有的SpringApplicationRunListenerenvironmentPrepared...另外我们根据setConnector源码可以知道,连接器(Connector)是设置service下,而且是可以设置多个连接器(Connector)。...发布应用启动完成事件 而启动Tomcat就是第7步“刷新上下文”;Tomcat启动主要是初始化2个核心组件,连接器(Connector)和容器(Container),一个Tomcat实例就是一个Server

1.5K30
领券