java - Java Spring JPA Hibernate不更新列
问题描述
我正在使用 Spring 4.1.0 和 hibernate-entitymanager 4.1.9
另外,我正在使用 Postgres 9.6
我有以下实体:
@Entity
@Table(name = "audit", schema = "public")
@SequenceGenerator(name = "AUDIT_SEQUENCE", sequenceName = "AUDIT_SEQUENCE", allocationSize = 1, initialValue = 1)
public class AuditTrail {
@Id
@Column(name = "auditid", unique = true)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AUDIT_SEQUENCE")
private long auditId;
@Column(name = "auditvalue")
private String auditValue;
... getter setters ...
}
这将列结构作为字符变化(255)
我想更新 auditValue 列的长度为 10000。所以我将实体更新为:
@Column(name = "auditvalue", length = 10000)
private String auditValue;
但是列结构没有更新。
我的 applicationContext.xml 包含:
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.avaya.mediamanager.entity" />
<property name="jpaVendorAdapter" ref="hbAdapterBean_pgsql"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.id.new_generator_mappings">true</prop>
</props>
</property>
</bean>
<bean id="hbAdapterBean_pgsql" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"></property>
<property name="generateDdl" value="true"></property>
<property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect"></property>
</bean>
如何从应用程序更新列?
解决方案
据我了解,hibernate.hbm2ddl.auto
设置为update
实际上并不会更新已创建的表,而是会在不删除数据的情况下添加新表。
您可以更改hibernate.hbm2ddl.auto
为create-drop
,这将导致您每次重新启动服务时都重新创建您的架构,但我不确定它是否正是您想要的,因为它也会删除您的所有数据。
如果你想保留你的数据,你可能需要考虑使用像 flyway 这样的东西来填充它。
我希望这有帮助!玩得开心!
推荐阅读
- python - 在什么情况下(如果有的话)手动引发 FileExistsError 是否合适?
- javascript - 我的替换函数适用于数组,但不适用于同样是数组的 HTML 集合。为什么?
- r - 如何让我的操作按钮等到单击以更新文本输出?闪亮的 R
- javascript - 反应原生 BottomTabNavigator 奇怪的动画
- c - 函数不扫描第二个值
- xml - 谷歌搜索控制台对我的第二个 sitemap.xml 说“不支持的文件格式”
- javascript - 提交事件后,如何从控制器函数中的类获取返回值?
- airflow-scheduler - Airflow dag 的日志作为电子邮件的附件/正文
- c++ - 您可以使用带有指定初始值设定项的显式构造函数吗?
- javascript - 浏览器显示 TypeError: Cannot read property 'user' of undefined