فشل التطبيق الذي يحتوي على بيئات على فشل مخطط المخطط: عمود REV من نوع خاطئ - تم العثور عليه [int8 (أنواع # BIGINT)] ، ولكن متوقعًا [int4 (أنواع # INTEGER)]

0

لدي تطبيقان Boot Spring يعملان مع نفس قاعدة البيانات. التطبيق الرئيسي يستخدم قاعدة البيانات بالكامل ، التطبيق الآخر مخصص للإبلاغ (قراءة البيانات التي تم إنشاؤها بواسطة التطبيق الرئيسي بشكل أساسي).

يستخدم التطبيق الرئيسي envers (org.hibernate: hibernate-envers: 5.3.1.Final) ، ويقوم بإنشاء جداول تدقيق لتتبع التغييرات (يتم إنشاء الجداول بواسطة liquibase). أحتاج إلى قراءة البيانات التاريخية من خلال تطبيق إعداد التقارير ، لذلك أضفت غرائب إلى هذا التطبيق أيضًا. فيما يلي بعض المقتطفات من تطبيق التقارير.

مثال الكيان:

@Entity
@Table(name = "applications")
@Audited
@AuditOverride(forClass = BaseEntity.class)
@EqualsAndHashCode(callSuper = true)
@Getter
public class ApplicationEntity extends BaseEntity {

    @ManyToOne(optional = false)
    @JoinColumn(name = "client_id")
    private ClientEntity client;

    private BigDecimal amount;
}

الفئة الفائقة:

@MappedSuperclass
@EntityListeners({PreventModificationsListener.class})
@ToString(of = "id")
@EqualsAndHashCode(of = "id")
@Getter
public abstract class BaseEntity {

    @VisibleForTesting
    @Setter(PACKAGE)
    @Id
    private Long id;

    @Version
    private Long version;
}

ترتيب:

spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQL95Dialect
        id:
          new_generator_mappings: true
        defaultSchema: public
        order_updates: true
        jdbc:
          fetch_size: 0
        hbm2ddl:
          auto: validate
        show_sql: false
        format_sql: false
        enable_lazy_load_no_trans: true
      org.hibernate:
        envers:
          audit_table_prefix: audit_
          audit_table_suffix:

نتيجة فشل تطبيق إعداد التقارير أثناء البدء في التحقق من صحة المخطط:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [rev] in table [audit_xyz]; found [int8 (Types#BIGINT)], but expecting [int4 (Types#INTEGER)]
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateColumnType(AbstractSchemaValidator.java:159)
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:143)
    at org.hibernate.tool.schema.internal.GroupedSchemaValidatorImpl.validateTables(GroupedSchemaValidatorImpl.java:42)
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:89)
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:68)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:191)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
    ... 136 common frames omitted

أي مساعدة واقتراحات موضع تقدير كبير.

1 إجابة

1
افضل جواب

أشار أحد زملائي إلى الاختلاف بين تطبيقين تبين أنهما الرابط المفقود.

فئة كيان المراجعة:

@Entity
@Table(name = "audit_revisions")
@SequenceGenerator(name = "seq_gen", sequenceName = "audit_revisions_seq", allocationSize = 1)
@RevisionEntity
@EntityListeners(AuditingEntityListener.class)
@Getter
public class AuditRevision {
    @Id
    @GeneratedValue(generator = "seq_gen", strategy = SEQUENCE)
    @RevisionNumber
    private Long id;

    @RevisionTimestamp
    private Date revisionDate;

    @CreatedBy
    private String createdBy;
}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام