database returned no natively generated

database returned no natively generated 分类:Hibernatehbm.xml中的配置如下:

<id name="logId" type="integer" column="LOGID">
<generator class="native"/>
</id>

native的功能是:

由数据库从identity,sequence和hilo中选取一个生成器来生成ID。

这样就需要主键设置成自增长的,一定要小心

采用的是Mysql5数据库,但在执行插入的时候报错:

The database returned no natively generated identity value

最后确认原因是数据库的表结构中关于logid,没有设置auto increment。

正确的建库如下:

CREATE TABLE `log` (
`LOGID` int(11) NOT NULL auto_increment,
`LOGUSER` varchar(10) default NULL,
`LOGTIME` datetime default NULL,
`LOGTYPE` char(1) default NULL,
PRIMARY KEY (`LOGID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk

完整的hbm.xml如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="com.shinyv.dao.hibernate.test">

<class name="Log" table="log" proxy="Log" dynamic-insert="true" dynamic-update="true">
<id name="logId" type="integer" column="LOGID">
<generator class="native"/>
</id>
<property name="logTime" column="LOGTIME" not-null="true"/>
<property name="userName" type="string" column="LOGUSER"/>
<property name="logType" column="LOGTYPE"/>
</class>

</hibernate-mapping>

### 非零退出状态的原因 程序执行结束时返回非零退出状态通常表示遇到了错误或异常情况。具体原因可能包括但不限于: - 运行过程中发生未处理的异常,如除数为零、数组越界访问等[^1]。 - 资源获取失败,比如文件无法打开、网络连接中断等问题[^1]。 - 参数传递不合法,当函数接收到不符合预期的数据作为输入参数时可能会抛出错误并终止运行。 对于编程中的这些常见问题,在编写代码阶段就应该考虑到可能出现的各种边界条件以及异常场景,并采取相应的预防措施来提高软件健壮性和稳定性。 ### 解决方案概述 针对上述提到的不同类型的非零退出状况,可以采用如下几种通用策略来进行修复和优化: #### 错误检测与捕获机制 通过引入更完善的错误捕捉逻辑能够有效减少意外崩溃的发生几率。例如Python中可以通过`try...except`语句块包裹容易出现问题的部分代码;而在C++里则有类似的结构化异常处理(SEH)语法支持。 ```python def divide(a, b): try: result = a / b except ZeroDivisionError as e: print(f"Caught an exception: {e}") return None else: return result ``` #### 输入验证 确保传入给各个模块/子系统的数据都经过严格校验后再继续后续操作是非常重要的一步。这不仅有助于防止非法值引发内部故障,还能增强整个应用程序的安全防护能力。 ```c++ if (inputValue < minValue || inputValue > maxValue){ std::cerr << "Invalid input value!" << std::endl; exit(EXIT_FAILURE); } ``` #### 日志记录功能 启用详细的日志输出可以帮助开发者快速定位到具体的报错位置及其上下文环境信息。无论是调试期间还是产品上线之后遇到难以重现的问题时都能发挥重要作用。 ```bash echo "$(date): Error occurred while processing request." >> error.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值