Hibernate之注解表的命名策略

对于hibernate注解实体中属性对应数据库表的列名,怎么命名的问题,我们肯定不愿一个个属性去配置吧

在applicationContext.xml中的sessionFactory中配置

<property name="namingStrategy">
    <bean class="org.hibernate.cfg.ImprovedNamingStrategy"></bean>
</property>

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'namingStrategy' of bean class [org.springframework.orm.hibernate5.LocalSessionFactoryBean]: Bean property 'namingStrategy' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

原来是Hibernate5.1相关配置变了。

参考:http://412887952-qq-com.iteye.com/blog/2315686

参考:http://stackoverflow.com/questions/32165694/spring-hibernate-5-naming-strategy-configuration

hibernate.ejb.naming_strategy将不再被支持,而是被替换成了两个属性:
hibernate.physical_naming_strategy
hibernate.implicit_naming_strategy

对于physical_naming_strategy有两个常用的配置:

org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

对于PhysicalNamingStrategyStandardImplDefaultNamingStrategy的效果,对于SpringPhysicalNamingStrategyImprovedNamingStrategy的效果。

在sessionFactory的bean里配置

<property name="PhysicalNamingStrategy">
  <bean class="org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl"></bean>
</property>

和在sessionFactory bean的hibernateProperties property中配置

<prop key="hibernate.physical_naming_strategy">org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl</prop>

是一样的。

org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy不在hibernate的jar包中先不去看。


<property name="ImplicitNamingStrategy">
    <bean class="org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl" />
</property>

<prop key="hibernate.implicit_naming_strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl</prop>
是一样的。

至于它们分别的命名方式并没看出有什么不一样,继续往下吧。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值