java - 会话保存后的HQL,主键每次显示0
问题描述
下面是我的代码,请帮助我找出为什么主键每次都是 0,尽管记录已正确插入 DB。我已经在 google 中检查了解决方案 - 它说 Session SAVE 方法应该返回正确的主键。
sessionFactory = HibernateUtil.sessionFactory;
session = sessionFactory.openSession();
session.beginTransaction();
Long currentTime =System.currentTimeMillis();
int primary_key_mailID;
EmailInfo emailObj;
for(int i=0;i<mailDtos.size();i++)
{
try
{
mailDTO = mailDtos.get(i);
emailObj = new EmailInfo();
emailObj.setDomain_id(domainNameToIdMap.get(mailDTO.getToEmail().trim()));
emailObj.setClient_id(clientEmailToIdMap.get(mailDTO.getFromEmail().trim()));
emailObj.setMail_cc(mailDTO.getCc()!=null? Arrays.toString(mailDTO.getCc()):"");
emailObj.setMail_bcc(mailDTO.getBcc()!=null? Arrays.toString(mailDTO.getBcc()):"");
emailObj.setMail_subject(mailDTO.getSubject());
emailObj.setMail_creation_time(currentTime);
emailObj.setStatus("new");
emailObj.setSource("mail");
primary_key_mailID = (Integer) session.save(emailObj);
System.out.println(primary_key_mailID);
}
catch (Exception e) {
e.printStackTrace();
}
}
session.getTransaction().commit();
解决方案
adding
@GeneratedValue(strategy = GenerationType.IDENTITY)
with the primary key column solved the issue.
推荐阅读
- php - Symfony 截断错误烦人地切断了我的错误消息(截断...)
- google-bigquery - 我如何得到两个日期之间的差异,不包括周末?
- reactjs - 加载器来处理地图中的这种文件类型 ReactJs
- labview - 在本地计算机上运行远程 VI
- azure - Azure Functions、部署槽和 API 管理:功能键问题
- android - 在 build.gradle 中使用 java 类
- c++ - 用给定的字典构建 C++ 翻译器?
- javascript - 循环遍历所有数据,创建对象,输出,重复
- php - PHP:存储在数据库中的会话 ID 不起作用
- python - 如何将 Google 客户端视觉库响应转换为 Json