私はDoctrineとSymfonyを使ってOracleデータベースに接続しています。ほとんどの問題はうまくいきますが、データベースにレコードを追加するだけで、番号が間違っていて、シーケンスが2になっています。OracleでSymfonyとDoctrineを使用しているときに、正しく追加されていないIDを2で返している場合
エンティティでは、プライマリ
/**
* @var integer
*
* @ORM\Column(name="PK", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="SEQ_GET_LOCATIONS_PK", allocationSize=1, initialValue=1)
*/
private $pk;
私はデータを追加し、私はPK戻ったら:私はトリガーを持っているデータベースで
$newMap = new Locations();
$newMap->setName($mapName);
$em = $this->getDoctrine()->getManager();
$em->persist($newMap);
$em->flush();
$mapId = $newMap->getPk();
を:私が持っているキー
create or replace TRIGGER insert_locations
Before Insert On "LOCATIONS" Referencing NEW AS NEW
For Each Row
Begin
SELECT SEQ_GET_LOCATIONS_PK.nextval into :new.pk from dual;
END;
とシーケンス:
CREATE SEQUENCE "SCHEMA"."SEQ_GET_LOCATIONS_PK" MINVALUE 14 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 109 CACHE 20 NOORDER NOCYCLE ;
過去のPKは、私は新しいものが96であることを期待し、95言った、そしてそれが価値であることを期待するならば、私は、データベースに新しい項目を追加します$ mapIdのしかし、データベースでは、返される値は96ですが、PKは97です!
私は、トリガーとは何かが残っているのか(それは過去の非symfonyバージョンのソフトウェアのものだったのでしょうか)、何か、私はトリガーを削除しても問題は残っているのだろうかと思います。
これはDoctrineのバグですか?