【问题标题】:Java Spring JPA Hibernate not updating columnJava Spring JPA Hibernate不更新列
【发布时间】:2019-09-09 00:18:06
【问题描述】:

我正在使用 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>  

如何从应用程序更新列?

【问题讨论】:

    标签: java postgresql hibernate jpa spring-data-jpa


    【解决方案1】:

    据我了解,hibernate.hbm2ddl.auto 设置为 update 实际上并不会更新已创建的表,而是会在不删除数据的情况下添加新表。

    您可以将hibernate.hbm2ddl.auto 更改为create-drop,这将导致您每次重新启动服务时重新创建您的架构,但我不确定它是否正是您想要的,因为它也会删除您的所有数据。

    如果你想保留你的数据,你可能需要考虑使用像 flyway 这样的东西来填充它。

    希望对您有所帮助! 玩得开心!

    【讨论】:

    • 抱歉,我认为在大多数情况下这是不可接受的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多