Java 使用驼峰大小写休眠空属性值 使用
Hibernate 5.3,Spring Boot 2.1,MySQL,在Windows 10操作系统中运行 我所知道的 我已经在phpmyadmin上验证了属性的情况。只要案例与我的实体类的属性相同,就不必在该实体中显式定义列名。并且不需要使用Java 使用驼峰大小写休眠空属性值 使用,java,sql,spring,spring-boot,jpql,Java,Sql,Spring,Spring Boot,Jpql,Hibernate 5.3,Spring Boot 2.1,MySQL,在Windows 10操作系统中运行 我所知道的 我已经在phpmyadmin上验证了属性的情况。只要案例与我的实体类的属性相同,就不必在该实体中显式定义列名。并且不需要使用@Column(name=“tableattribute”) 问题 执行查询后,就可以正确地检索行数。例如,我的数据库包含5条记录,列表包含5个employee对象,但其实体的所有属性始终以null值返回 我希望删除在每个属性上显式声明列名的操作,并确保
@Column(name=“tableattribute”)
问题
执行查询后,就可以正确地检索行数。例如,我的数据库包含5条记录,列表包含5个employee对象,但其实体的所有属性始终以null值返回
我希望删除在每个属性上显式声明列名的操作,并确保它在实际的服务器中工作,这可能会导致列名和属性名的大小写出现问题
尝试
我尝试在每个属性上添加@Column('Column Name all lowercase')
,它检索值
了解到这一点后,我验证了表列是否为小写,但不是小写。相反,它仍然遵循SQL命令中的camel大小写来创建表
MySQL表
实体
只要@Column并以小写形式指定列名,该实体现在就可以正常工作。但是,用@Column添加每个属性并用小写字母指定字段的名称是很烦人的
@Entity
@Table(name="personal")
public class Employee implements Serializable {
@Id
@Column(name="empID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull
@Column(name="empnumber")
private String empNumber;
private String surname;
private String firstname;
private String middlename;
@Column(name="middleinitial")
private String middleInitial;
@Column(name="nameextension")
private String nameExtension;
}
DAO上的实际查询片段
@Autowired
私人实体管理者实体管理者;
@凌驾
公共列表findAll(){
会话currentSession=entityManager.unwrap(会话.class);
Query Query=currentSession.createQuery(“来自Employee”,Employee.class);
返回query.getResultList();
}
您可以通过设置
spring.jpa.hibernate.naming.physical-strategy
spring.jpa.hibernate.naming.implicit-strategy
应用程序中的属性。属性。关于如何自己实施这些策略,您可以查看
编辑1:
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
有getter、setter、toString、equals和其他方法。我只是没有在我发布的代码中包含方法。谢谢这很有效。我刚刚结束了为策略添加值的工作,并使用hibernate当前的默认类来检查它是否有效。而且效果很好。以下是我使用maven在应用程序属性中添加的代码:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl-spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy
spring.jpa.hibernate.naming.implicit-strategy
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl