Собственный запрос Hibernate не создает автоматически увеличенный первичный ключ
У меня есть таблица, созданная с использованием ликвазы, следующим образом
<createTable tableName="MyTable">
<column name="id" type="BIGINT" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="a" type="VARCHAR(255)"/>
<column name="b" type="VARCHAR(255)"/>
<column name="c" type="BIGINT"/>
<column name="fk_id" type="BIGINT"/>
</createTable>
Затем у меня есть собственный запрос, который я использую, чтобы сохранить этот объект
EntityManager em = session.getEntityManagerFactory().createEntityManager();
em.getTransaction().begin();
em.createNativeQuery(
"INSERT INTO MyTable (a, b, c, fk_id)"
+ " VALUES ( :a, :b, :c, :fk_id)")
.setParameter("a", myObj.geta().toString())
.setParameter("b", myObj.getb().toString())
.setParameter("c", myObj.getc()))
.setParameter("fk_id",
myObj.getOtherObj().getId)
.executeUpdate();
em.getTransaction().commit();
em.close();
Я установил аннотацию JPA для автоинкрементации этого идентификатора следующим образом
@Id
@JsonProperty
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
Тем не менее, идентификатор равен нулю в базе данных, что я пропустил? Я также попытался вставить нулевое значение вместо первичного ключа, но он все равно не увеличивает его автоматически до значения?
Также попытался изменить его на
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
@GenericGenerator(name = "native", strategy = "native")
@Column(name = "id", updatable = false, nullable = false)
private Long id;
Это не похоже на работу
Также пытался использовать GenerationType.Table и GenerationType.SEQUENCE
Вот SQl, который я вижу
Hibernate:
/* dynamic native SQL query */ INSERT
INTO
MyTable
(a, b, c, d, fk_id)
VALUES
(?, ?, ?, ?, ?)
Затем я регистрирую постоянную сущность, чтобы увидеть, получает ли она автоматически увеличенный идентификатор
INFO [2019-02-25 16:24:11,611] Successfully persisted myObj: 'null:FK_table{its values} other stuff gets saved'
Обратите внимание, что столбец ID пуст.
Я также явно установил ID в null перед выполнением запроса, но все же не повезло, я попытался выполнить тот же запрос, используя другой клиент MySQL, и это, кажется, работает