0

所以说我做了这样的事情:

Employee emp=new Employee();
emp.setId(1); // PK
emp.setName("Earl");
emp.setAge("73");

session.save();

根据这里的教程:http : //www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example/,假设所有映射都是正确的,这应该会在 Employee 表中插入。但是,我不断收到序列化错误。是因为我给 ID 一个值吗?查询生成(但是它将 Id 设为 NULL ......这是为什么?)

有什么方法可以验证禁止检查数据库以查看查询是否完成?另外,请查看我的其他查询。我对休眠很陌生。

4

2 回答 2

3

这可以通过将您的 id 保持为生成值来完成,您可以将返回类型强制转换为整数。在模型类中将此注释放在 id 上

@generatedvalue(strategy = generationtype.auto)
private int id;

那么就不需要插入Employee id hibernate自动生成值并插入并检查是否插入了值

Int i=(Integer)session.save(emp);
if(i > 0)
{
System.out.println("Values inserted");
}
于 2013-06-26T06:12:43.507 回答
0

首先检查您是否将值传递给函数 session.save():

session.save(emp);

如果还是失败...

可能是您的主键设置为自动递增。所以你不需要为它指定一个值。
也尝试将其包装在事务中。
试试这个:

Transaction txn = session.beginTransaction();
Employee emp=new Employee();
//emp.setId(1); // PK
emp.setName("Earl");
emp.setAge("73");

session.save(emp);
txn.commit();

和最美好的祝愿。。

于 2013-06-13T02:14:15.873 回答