Hibernate 添加一个新的 属性 到现有的 hibernate @Entity(新列)
Hibernate add a new property to existing hibernate @Entity (new column)
我将 Hibernate 与 MariaDB 一起使用,当我更新我的应用程序时,我有时需要将 属性 添加到现有实体,但是当我这样做时,hibernate 确实将该新列添加到 MariaDB table,但是该列中的所有值都是 NULL 并且 hibernate 拒绝启动并抛出大量错误:
Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'metaDataSourceAdvisor': Cannot resolve reference to bean 'methodSecurityMetadataSource' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available
为了解决这个问题,我必须手动登录到数据库并为创建的新列设置值,然后休眠再次启动且没有错误。但我正在寻找一种方法来为该列定义默认值,因此我不必这样做,而且该过程是自动的。
您可以在创建字段时初始化/设置一个默认值,如下所示
@Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
注意:列定义中的“int”是指列数据类型,因此您需要根据您的要求更新它。
我将 Hibernate 与 MariaDB 一起使用,当我更新我的应用程序时,我有时需要将 属性 添加到现有实体,但是当我这样做时,hibernate 确实将该新列添加到 MariaDB table,但是该列中的所有值都是 NULL 并且 hibernate 拒绝启动并抛出大量错误:
Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'metaDataSourceAdvisor': Cannot resolve reference to bean 'methodSecurityMetadataSource' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available
为了解决这个问题,我必须手动登录到数据库并为创建的新列设置值,然后休眠再次启动且没有错误。但我正在寻找一种方法来为该列定义默认值,因此我不必这样做,而且该过程是自动的。
您可以在创建字段时初始化/设置一个默认值,如下所示
@Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
注意:列定义中的“int”是指列数据类型,因此您需要根据您的要求更新它。