Ответ 1
Проверьте последнюю документацию доктрины
Вот резюме: список возможных стратегий генерации:
АВТО (по умолчанию): говорит Doctrine о выборе стратегии, которая предпочтительнее используемой платформы баз данных. Предпочтительными стратегиями являются IDENTITY
для MySQL, SQLite и MsSQL и SEQUENCE
для Oracle и PostgreSQL. Эта стратегия обеспечивает полную переносимость.
SEQUENCE: Сообщает Doctrine, чтобы использовать последовательность базы данных для генерации ID
. В настоящее время эта стратегия не обеспечивает полной мобильности. Последовательности поддерживаются Oracle и PostgreSql.
ИДЕНТИФИКАЦИЯ: Сообщает Doctrine использовать специальные столбцы идентификации в базе данных, которые генерируют значение при вставке строки. В настоящее время эта стратегия не обеспечивает полной переносимости и поддерживается следующими платформами:
- MySQL/SQLite = >
AUTO_INCREMENT
- MSSQL = >
IDENTITY
- PostgreSQL = >
SERIAL
TABLE: Сообщает Doctrine о том, чтобы использовать отдельную таблицу для генерации ID
. Эта стратегия обеспечивает полную мобильность. Эта стратегия еще не реализована!
НЕТ: Сообщает Doctrine, что идентификаторы назначаются и, таким образом, генерируются вашим кодом. Назначение должно выполняться до того, как новый объект будет передан EntityManager # persist. NONE
- это то же самое, что полностью оставить @GeneratedValue
.
ВЕРСИЯ 2.3:
UUID: Сообщает, что Doctrine использует встроенный универсальный генератор уникальных идентификаторов. Эта стратегия обеспечивает полную переносимость.