Jpa данных Couchbase для создания составного первичного ключа

Группа повторных захватов: номер группы остается тем же

Группа, определенная (..), является группой 1. Конец квантора + повторяет его. Каждый раз, когда движок может повторять группу (совпадающие с двумя символами), группа 1 перезаписывается.

  • Когда двигатель начинает совпадать, он захватывает aa в группу 1
  • Затем он фиксирует bb до группы 1
  • . Затем захватывает cc в группу 1.

Когда вы проверяете группу 1, двигатель возвращает cc. Все остальные записи потеряны.

(Исключением является механизм .NET, который также возвращает cc, а также позволяет проверять промежуточные захваты благодаря объекту CaptureCollection. Он будет содержать aa, bb и cc .)

С помощью (..)+(...), почему группа 1 содержит aa? Откат!

Чтобы понять это, нам снова нужно следовать по пути движка регулярного выражения.

  • Еще раз, когда двигатель начинает совпадать, он захватывает aa в группу 1
  • Опять же, он повторяет группу (..) и фиксирует bb в группе 1
  • . Опять же, он повторяет группу (..) и захватывает cc в группу 1
  • Теперь двигатель пытается сопоставить (...). Он терпит неудачу: нет никаких символов, оставшихся для потребления.
  • Двигатель отступает как в строке, так и в шаблоне регулярных выражений. + означает один или несколько раз, и мы сопоставили .. три раза, поэтому мы можем дать один или даже два. На этом этапе двигатель отказывается от последнего совпадения количественной группы (..)+, которая является cc. Мы вернулись, когда группа 1 была bb.
  • Двигатель снова пытается сопоставить (...). Осталось всего два символа: cc, поэтому он снова не работает.
  • Двигатель отступает, отказываясь от последнего совпадения количественной группы (..)+, которая является bb. На этом этапе группа 1 снова aa.
  • Двигатель снова пытается сопоставить (...). Успешно: группа 2 - bbc, а группа 1 - aa

Ссылка

1
задан Manu 5 March 2019 в 10:47
поделиться

1 ответ

Я думаю, что вы сможете добиться того, чего хотите, используя следующее -

@Document

открытый класс Person {

@Id
@GeneratedValue()
String key;

@IdPrefix
String id;

@Field
@IdAttribute
String name;

@Field
private String city;

}

[ 117] Используйте @IdSuffix, если хотите, чтобы значение в id было после имени. При создании вышеупомянутого объекта не присваивайте значение ключевой переменной самостоятельно, так как это значение не будет сгенерировано автоматически, если вы предоставите свое собственное в соответствии с документами - https://docs.spring.io/spring-data /couchbase/docs/current/reference/html/#couchbase.autokeygeneration.configuration.

0
ответ дан silver-soul 5 March 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: