Java Spring数据返回空实体
我正在尝试实现简单的Spring数据应用程序。我有一个带有几个字段的简单实体Employee,我使用crudepository:findById中的方法从数据库中检索Employee。 但结果总是空的,实体中只有一个ID字段是正确的,而其他字段是空的。即使我试图获取findAll(),我也得到了表中的所有记录,但它们只有ID字段,没有其他内容 我不使用addonations,只使用Hibernate.hbm.XML的XML文件。hbm.xml的实体外观如下: 员工实体:Java Spring数据返回空实体,java,spring,spring-data,Java,Spring,Spring Data,我正在尝试实现简单的Spring数据应用程序。我有一个带有几个字段的简单实体Employee,我使用crudepository:findById中的方法从数据库中检索Employee。 但结果总是空的,实体中只有一个ID字段是正确的,而其他字段是空的。即使我试图获取findAll(),我也得到了表中的所有记录,但它们只有ID字段,没有其他内容 我不使用addonations,只使用Hibernate.hbm.XML的XML文件。hbm.xml的实体外观如下: 员工实体: public class
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
Employee.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" />
</property>
<property name="empAvatar" type="string">
<column name="emp_avatar" />
</property>
<property name="empDepartmentId" type="java.lang.Integer">
<column name="emp_department_id" />
</property>
<property name="empPositionId" type="java.lang.Integer">
<column name="emp_position_id" />
</property>
<property name="empManagerId" type="java.lang.Integer">
<column name="emp_manager_id" />
</property>
<property name="empIsManager" type="java.lang.Integer">
<column name="emp_isManager" />
</property>
<property name="empEvidenceNumber" type="string">
<column name="emp_evidenceNumber" length="4" />
</property>
<property name="empAreaOfWork" type="java.lang.Double">
<column name="emp_areaOfWork" precision="3" />
</property>
<property name="empWorkingHoursPerDay" type="java.lang.Integer">
<column name="emp_workingHoursPerDay" />
</property>
<property name="empFirstWorkDay" type="string">
<column name="emp_firstWorkDay" length="10" />
</property>
</class>
</hibernate-mapping>
之后,我尝试在主控制器中使用system.out.println,并在简单索引页面上显示数据。
我确信这不是显示数据的问题,因为Hibernate可以很好地工作。具有Spring数据的所有记录只有ID字段。
并且有来自登录控制台的查询:
Hiber冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬冬:选择employee0\u0。EmEmEmpoye0。Empoye0。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp密码作为emp。密码作为emp。密码作为emp密码作为emp密码作为emp。密码作为emp密码作为emp密码作为emp的emp。2 2 2。2 2 2 2。2。2 2 2。2 2。2。2。2。2。2。2。2。2。2。2。2。2。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。emp。您的出生日期为emp\u birt7\u 2\u 0,雇员0。emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.emp.你们们作为作为作为一个职位的化身作为作为一个职位的化身是作为一个职位的化身是作为一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一个职位,是一EE0。emp区域作为emp的工作区域是14个,员工0。员工每天工作时间为15小时,员工0。员工第一天工作时间为16小时,从休假工具开始。vt_员工员工0。员工id_员工=
如何从数据库中获取所有字段?我的表中有15条记录包含完整的数据。如果没有代码,很难提供帮助,但您可以检查:
- 其他字段是否可访问(setter或public修饰符)
- 字段是否映射到右列@列(name=“my_Column”)
- 我发现了问题。
在使用我的代码期间,没有出现任何错误/警告,但我在application.properties中找到了一个要添加的属性:
hibernate.hbm2ddl.auto=update
这一行在表中创建了缺少的列,所以我只想检查一下。在控制台中,我看到了为所有包含多个单词的列创建新列
e、 g.在我的表中,我有“emp_firstName”,并且创建了新的列“emp_firstName”。即使在my.hbm.xml中我声明了以下字段:
<property name="empFirstName" type="string">
<column name="emp_firstName" length="75" />
</property>
它不起作用。
因此,当我在控制台日志中发现这一点时,我使用“\ux”更改了此列和其他列,然后一切正常
但我不能理解两件事
1) 当我在.hbm.xml中更改了列名但没有更改属性时,它仍然在属性文件中使用错误的列名(当然,在这种情况下hibernate不起作用,所以我也用“\ux”更改了属性)。我不知道该怎么办
2) 为什么需要在每个单词后面使用“\u”,例如列名中的“first\u name”,而不是“firstName”?代码是什么?错误?听起来数据库表的列名可能与Employee实体类中的字段名不匹配。如果您发布用于表创建和Employee类的代码,我们可能会提供帮助。我添加了我的代码所有字段都有setter/getter-我认为这不是问题所在,因为exactle同一实体在hibernate中运行良好,我使用的是XML mapping.hbm.XML
hibernate.hbm2ddl.auto=update
<property name="empFirstName" type="string">
<column name="emp_firstName" length="75" />
</property>