В EntityLoad ColdFusion отсутствует последняя запись - PullRequest
1 голос
/ 15 марта 2012

EntityLoad с 1 аргументом должен возвращать все записи в таблице.

Однако, если я вызываю его сразу после EntityNew и EntitySave (который вставляет новую запись), последняя запись, по-видимому, отсутствует врезультаты.

Я получаю запись обратно нормально, если я вместо этого передам фильтр или если я вызову EntityLoadByPk.Я понимаю, что, возможно, не захочется вставлять запись в тот же запрос, но я все же хотел бы знать, что здесь происходит.

local.e = EntityNew("e");
local.e.setDescription("lorem ipsum");
EntitySave(local.e);
local.id = local.e.getId();

//fails to get record inserted above
dump(EntityLoad("e"));

//gets record inserted above successfully
dump(EntityLoadByPk("e", local.id));

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Hibernate не сохраняет никаких данных до завершения запроса, поэтому вы не можете извлечь запись, которая была EntitySave () d в том же запросе.

Вы можете запустить ORMFlush () после вашего entitySave () и до вашего entityLoad ().

local.e = EntityNew("e");
local.e.setDescription("lorem ipsum");
EntitySave(local.e);
local.id = local.e.getId();

//persist any dirty records so they are loaded in the next EntityLoad()
ORMFlush();

//fails to get record inserted above
dump(EntityLoad("e"));
1 голос
/ 15 марта 2012

Это связано с сессиями Hibernate и когда запускается SQL для сохранения сущности. Я не эксперт, поэтому трудно объяснить «рабочий процесс».

Один из способов обойти эту проблему - обернуть entitySave () в транзакцию.

transaction{
    EntitySave(local.e);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...