все значения первичного ключа используются, и нет места для новых строк. что я могу делать? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть класс ужинания сущностей, который я не могу изменить, и он содержит целое число, поданное как OID (первичный ключ). как вы знаете, целое число может иметь значения от -2 147 483 648 до 2 147 483 647, и все эти диапазоны используются сейчас. к сожалению, я не могу изменить целочисленный тип на длинный. поэтому hibernate начинает создавать другой допустимый ключ между этими диапазонами, но oracle говорит, что это уникальное нарушение ограничения. любая идея будет оценена. Класс сущности:

@MappedSuperclass
public abstract class EtVersionlessEntity
{
  private Integer oid;

  @Id
  public Integer getOid()
  {
    return this.oid;
  }

Тип столбца Oracle - НОМЕР (10).

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Измените тип данных на что-то, что может содержать большие значения.

к сожалению, я не могу изменить целочисленный тип на long.

Тогда вы застряли; вам нужно использовать больший тип данных, но вы не хотите / не можете этого сделать, поэтому у вас недостаточно свободного места.

Вы либо:

  • Согласитесь, что данные- типы не будут меняться и у вас закончились уникальные значения; или
  • Вы увеличиваете размер используемого типа данных, чтобы иметь больший диапазон значений.
0 голосов
/ 23 марта 2020

кто-то дал мне решение, которым я хотел бы поделиться в качестве ответа:

  1. создайте класс, аналогичный классу в jar-файле (с тем же именем и пакетом)
  2. удалите "extends" и определите переменную с тем же именем, что и родительский тип типа long:

    private long oid; 
    @Id
    public long getOid()
    {
       return this.oid;
    }
    

    3. go в файл ORM и добавьте все спецификации для ключа, как это определено для родителя

    <mapped-superclass class="EtEntity">
          <attributes>
             <id name="oid">
                <generated-value generator="HI_LO_SEQ" strategy="TABLE" />
                <table-generator name="HI_LO_SEQ" allocation-size="1000"/>
             </id>
         </attributes>
    </mapped-superclass>
    
  3. изменить столбец БД, чтобы принимать длинные значения (NUMBER (19))

и все! работал ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...