为了账号安全,请及时绑定邮箱和手机立即绑定

休眠保存总是返回 0

休眠保存总是返回 0

侃侃无极 2021-07-08 13:04:39
我正在尝试实现简单的 Spring Data 应用程序。我有一个简单的实体 Employee 和几个字段,我使用 CrudRepository: findById 中的方法从数据库中检索员工。但结果总是为空,实体中唯一的ID字段是正确的,但其他字段为空。即使我试图获取 findAll() 然后我也从表中获取了所有记录,但它们只有 ID 字段,没有别的。我不使用插件只是 Hibernate .hbm.xml 的 XML 文件。使用 hbm.xml 看起来实体如何:员工实体:public class Employee extends BaseEntity {private static final long serialVersionUID = -1400760321767476971L;private String empFirstName;private String empPassword;private String empRole;private String empLastName;private String empBirthDate;private String empAvatar;private Integer empDepartmentId;private Integer empEnabled;private Integer empPositionId;private Integer empManagerId;private Integer empIsManager;private String empEvidenceNumber;private Double empAreaOfWork;private Integer empWorkingHoursPerDay;private String empFirstWorkDay;...getters/setters/constructors员工.hbm.xml:<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Employee" table="vt_employee" catalog="VacationTool"    optimistic-lock="version">    <id name="id" type="java.lang.Integer">        <column name="id_employee" />        <generator class="identity" />    </id>    <property name="empPassword" type="string">        <column name="emp_password" length="60" />    </property>    <property name="empRole" type="string">        <column name="emp_role" length="45" />    </property>    <property name="empEnabled" type="java.lang.Integer">        <column name="emp_enabled" />    </property>    <property name="empFirstName" type="string">        <column name="emp_firstName" length="75" />    </property>    <property name="empLastName" type="string">        <column name="emp_lastName" length="75" />    </property>    <property name="empBirthDate" type="string">        <column name="emp_birthDate" length="10" />员工实体扩展了 BaseEntity,只有一个带有 setter/getter 的字段“id”。
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

将您id的生成器更改为identity,它将起作用(假设id您的数据库中的列是auto_increment)。IdentityGenerator 期望由数据库中的标识列生成的值,这意味着它们是自动递增的。您的休眠配置的问题在于您试图在没有定义序列的情况下使用序列生成器。如果你没有在你的数据库中定义任何序列并且你的id列是一个自动递增的列,那么使用identity生成器是最好的选择,因为 Hibernate 将获取id由数据库生成的(使用查询获取最后生成的 id)。


<id name="id" type="java.lang.Long">

  <column name="id" />

  <generator class="identity" /><!--Changed from sequence to identity-->

</id>


查看完整回答
反对 回复 2021-07-29
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信