assigned , native , identity 区别-Field 'id' doesn't have a default value问题解决方法

Hibernate主键生成策略详解
本文详细解释了Hibernate中assigned、native及identity的区别,并提供了针对Field 'id' doesn't have a default value错误的具体解决方案。

assigned , native , identity 区别-Field 'id' doesn't have a default value问题解决方法

综合参考:http://blog.youkuaiyun.com/huaweitman/article/details/39025553

http://chen.ch.j.blog.163.com/blog/static/1324171212010919325852/


就是,hibernate设置主键生成策略为自动生成的时候,会报错:Field 'id' doesn't have a default value


解决办法是,要么把数据库的这个id改为自动生成,如果是每次都使用程序写的,那么就把hibernate改为assigned


assigned 与 native :

在用Hibernate的时候,当有表中的主键是库自动生成的时候将使用native。
而当是自己添加的时候则需要改为assigned。
因为assigned是指指定的,分配的, 
如果你不赋予他值,那么他是不能实现的. 
需要人工,自己把某个东西赋予给它 
所以是assigned 

native  与 identity :
修饰符,代表自增的意思,只是看你选择的数据库不同而选择不同,
一般来说象SQL,MYSQL这类的数据库都是选择identity。
在HIBERNATE配置中native是默认的,泛指的自增,
也就是说除了oracle数据库外(oracle下用native需要用到一个叫hibernate_sequence的sequence),
大部分数据库你都可以使用默认的native来代表自增。 

<think>我们正在解决用户的问题:GitLab CI/CD任务卡住,因为没有在线的Runner分配给项目。根据用户提供的引用,我们知道GitLabRunner需要先安装并注册到GitLab项目上,然后才能执行CI/CD任务。用户的问题描述:任务卡住是因为没有在线的Runner。因此,我们需要指导用户如何安装注册Runner,并将其分配给项目。解决方案步骤:1.在服务器上安装GitLab Runner。2.注册Runner到GitLab项目。3.确保Runner在线并分配给项目。根据引用[1][2]的内容,我们可以提取安装注册Runner的步骤。注意:用户可能是在Ubuntu系统上操作,所以以Ubuntu为例。具体步骤:步骤1:安装GitLab Runner-下载二进制文件-赋予执行权限-创建一个专用的用户(如gitlab-runner)-安装并作为服务启动步骤2:注册Runner到GitLab项目-从GitLab项目的设置中获取注册令牌(URLtoken)-使用`gitlab-runnerregister`命令进行注册步骤3:验证Runner状态-检查Runner是否在线并且已分配给项目下面给出详细的操作指南:</think>### 解决 GitLab CI/CD 任务卡住问题(无在线 Runner) 当 CI/CD 任务因 **"This job is stuck because you don't have any active runners online assigned to its project"** 卡住时,需按以下步骤解决--- #### 1. **安装 GitLab Runner** 在服务器上执行以下命令(以 Ubuntu 为例): ```bash # 下载 Runner 二进制文件 sudo wget -O /usr/local/bin/gitlab-runner \ https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # 赋予执行权限 sudo chmod +x /usr/local/bin/gitlab-runner # 创建专用用户(避免 root 权限风险) sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash # 安装为系统服务 sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner ``` > 关键点:专用用户 `gitlab-runner` 提升安全性[^1][^2] --- #### 2. **注册 Runner 到项目** ```bash # 启动注册流程 sudo gitlab-runner register ``` 按提示输入以下信息: ``` 1. GitLab 实例 URL: https://gitlab.com/ (或自托管地址) 2. 注册令牌: 从 GitLab 项目 → Settings → CI/CD → Runners 获取 3. 描述: my-project-runner 4. 标签: linux, docker (按需设置) 5. 执行器: docker (推荐) 或 shell ``` > 注册后 Runner 会自动出现在项目设置中[^2] --- #### 3. **启动 Runner 服务** ```bash # 启动服务 sudo gitlab-runner start # 检查状态 sudo gitlab-runner status ``` 正常输出应包含:`gitlab-runner: Service is running` --- #### 4. **验证 Runner 在线** 在 GitLab 项目检查: 1. 进入 **Settings → CI/CD → Runners** 2. 查看 Runner 状态: - ✅ 绿色圆圈:在线 - ❌ 灰色圆圈:离线(需排查) ![Runner 状态示意图](https://docs.gitlab.com/runner/img/ci_runners_active.png) --- #### 5. **常见故障排查 | 问题现象 | 解决方案 | |---------|----------| | Runner 显示离线 | `sudo gitlab-runner restart` | | 注册令牌无效 | 重新生成令牌并再次注册 | | 网络不通 | 确保 Runner 服务器能访问 GitLab 实例 | | 权限不足 | 检查 `gitlab-runner` 用户对项目目录的权限 | > 提示:使用 Docker 执行器可避免环境依赖问题[^2] --- #### 6. **配置重试机制(可选)** 在 `.gitlab-ci.yml` 中添加重试逻辑,应对临时故障: ```yaml deploy_job: script: ./deploy.sh retry: max: 2 when: runner_unavailable # 专门处理 Runner 不可用的情况[^3] ``` --- ### 验证流程 提交一次代码变更,观察: 1. Pipeline 是否自动触发 2. Job 是否分配到新注册的 Runner 3. 控制台日志是否显示任务执行中 > 成功标志:Job 状态从 `stuck` 变为 `running` → `passed`
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值