Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用驼峰大小写休眠空属性值 使用_Java_Sql_Spring_Spring Boot_Jpql - Fatal编程技术网

Java 使用驼峰大小写休眠空属性值 使用

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值返回 我希望删除在每个属性上显式声明列名的操作,并确保

Hibernate 5.3,Spring Boot 2.1,MySQL,在Windows 10操作系统中运行

我所知道的 我已经在phpmyadmin上验证了属性的情况。只要案例与我的实体类的属性相同,就不必在该实体中显式定义列名。并且不需要使用
@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