@GeneratedValue(generator = “JDBC“)

本文介绍了在实体类中如何正确配置自增主键。如果主键采用自增方式,则需在实体字段上添加@GeneratedValue注解,并指定generator为JDBC。此配置确保主键能被正确管理和使用。
部署运行你感兴趣的模型镜像

If the primary key is self increment, you have to add @GeneratedValue(generator = “JDBC”) on your entity’s field. Otherwise, the primary key can be got if you want to use it again.

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

package org.eab.cloud.service.report.entity; import cn.hutool.json.JSONUtil; import jakarta.persistence.*; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.eab.common.datasource.entity.BaseEntity; import java.util.ArrayList; import java.util.List; @EqualsAndHashCode(callSuper = true) @Data @Entity @Slf4j @Table(name = "crm_follow_report", uniqueConstraints = @UniqueConstraint(columnNames = {"customer_phone", "employee_phone", "report_date"})) public class FollowReportEntity extends BaseEntity { @EmbeddedId private FollowReportPK id; // 组合主键 // 客户信息 @Column(name = "customer_new_id", columnDefinition = "varchar(100) COMMENT '客户新ID'") private String customerNewId; @Column(name = "customer_old_id", columnDefinition = "varchar(100) COMMENT '客户旧ID'") private String customerOldId; // 微信信息 @Column(name = "wechat_avatar", columnDefinition = "varchar(256) COMMENT '微信头像URL'") private String wechatAvatar; @Column(name = "wechat_nickname", columnDefinition = "varchar(512) COMMENT '微信昵称'") private String wechatNickname; @Column(name = "wechat_id", columnDefinition = "varchar(64) COMMENT '微信号'") private String wechatId; // 其他信息 @Column(name = "customer_level", columnDefinition = "varchar(32) COMMENT '客户级别'") private String customerLevel; @Column(name = "employee_name", columnDefinition = "varchar(100) COMMENT '跟进人姓名'") private String employeeName; @Column(name = "dept_id", columnDefinition = "varchar(32) COMMENT '所属部门ID'") private String deptId; @Column(name = "dept_name", columnDefinition = "varchar(100) COMMENT '所属部门名称'") private String deptName; // 操作类型列表(存储多种沟通方式) @Column(name = "operation_types", columnDefinition = "json COMMENT '操作类型列表'") private String operationTypes; // 关联记录ID列表(存储多种沟通方式的记录ID) @Column(name = "record_ids", columnDefinition = "json COMMENT '关联记录ID列表'") private String recordIds; // 辅助方法:获取操作类型列表 public List<String> getOperationTypesList() { if (operationTypes == null || operationTypes.isEmpty()) { return new ArrayList<>(); } try { return JSONUtil.parseArray(operationTypes).toList(String.class); } catch (Exception e) { log.error("解析操作类型失败: {}", operationTypes, e); return new ArrayList<>(); } } // 辅助方法:设置操作类型列表 public void setOperationTypesList(List<String> operationTypes) { this.operationTypes = JSONUtil.toJsonStr(operationTypes); } // 辅助方法:获取记录ID列表 public List<String> getRecordIdsList() { if (recordIds == null || recordIds.isEmpty()) { return new ArrayList<>(); } try { return JSONUtil.parseArray(recordIds).toList(String.class); } catch (Exception e) { log.error("解析记录ID失败: {}", recordIds, e); return new ArrayList<>(); } } // 辅助方法:设置记录ID列表 public void setRecordIdsList(List<String> recordIds) { this.recordIds = JSONUtil.toJsonStr(recordIds); } } package org.eab.cloud.service.report.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.time.LocalDate; @Data @NoArgsConstructor @AllArgsConstructor @Embeddable public class FollowReportPK implements Serializable { @Column(name = "customer_phone", nullable = false, columnDefinition = "varchar(20) COMMENT '客户手机号'") private String customerPhone; @Column(name = "employee_phone", nullable = false, columnDefinition = "varchar(20) COMMENT '跟进人手机号'") private String employeePhone; @Column(name = "report_date", nullable = false, columnDefinition = "date COMMENT '报告日期'") private LocalDate reportDate; // 必须重写equals和hashCode方法 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FollowReportPK that = (FollowReportPK) o; if (!customerPhone.equals(that.customerPhone)) return false; if (!employeePhone.equals(that.employeePhone)) return false; return reportDate.equals(that.reportDate); } @Override public int hashCode() { int result = customerPhone.hashCode(); result = 31 * result + employeePhone.hashCode(); result = 31 * result + reportDate.hashCode(); return result; } } 我们现在用的是mysql做的数据库存储,现在我们的方案中想把mysql更换成postGre,对于我现有的实体类需要变更吗,还是完全可以无缝衔接到postGre中?
08-06
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值