Разбиение пружинного сапога postgres стол - PullRequest
1 голос
/ 05 мая 2020

У меня есть приложение springboot, в котором мне нужно реализовать разделение базы данных (по "диапазону") для таблицы сообщений на основе значения атрибута posted_at.

Entity:

@Entity
public class Post {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(updatable = false, nullable = false)
  private BigInteger id;

  private String title;

  private Date postedDate;

  .....
}

Миграция Liquibase:

<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">
<changeSet id="00001" author="author">
    <sql splitStatements="true">
        CREATE TABLE posts (
        id bigint primary key,
        title varchar(200),
        posted_at timestamp with time zone) PARTITION BY RANGE (posted_at)
    </sql>
</changeSet>

Когда я запускаю указанную выше миграцию db, Postgres жалуется, что я должен добавить первичный ключ также в ключи разделов, чего я действительно не хочу. Если я удалю первичный ключ из таблицы, JPA начнет выдавать исключение, говоря, что у меня не может быть объекта без поля @Id. Как это можно решить?

PS: Я использую простой sql внутри миграции Liquibase, так как Liquibase не имеет прямой поддержки для разделения db.

...