HQL транзакциясына себеп болатын команда

Менде ақыр соңында транзакцияларды қайтаруды жүзеге асыратын интеграциялық тест бар. Жақында мен тестке HQL командасын қосқан едім. Мен мұны істегенімде, тестілеудегі басқа көптеген жазбалар HQL-команданың транзакцияға себеп болған секілді дерекқорға жүгінуді бастады. Rollback пәрмені соңында шақырылады және ерекше жағдайды шығармайды, бірақ деректер бәрібір орындалады. HQL команданың транзакция жасауына қандай да бір тәсілі бар ма?

HQL пәрмені емес, SQL пәрменін пайдалансам, қате пайда болмайды.

Қоршаған орта: ASP.NET, NHibernate, Oracle.

0
сол секция және барлық басқа жазу әрекеттеріне арналған операция болып табыла ма?
қосылды автор Firo, көзі

1 жауаптар

Сіз шатастырып, өзіңізді адастырасыз. Деректер базасында жолдарды енгізу/жаңарту/жою үшін NHibernate SQL операторларын орындағанда, флэш дегеніміз. Міндеттеме, бұл ендірмелер/жаңартулар/жойылған кезде басқа мәмілелерге тұрақты және көрінетін болады.

Жадыны HQL сұрауы орындалатын кезде орындалады, себебі сұрауда жадта өзгертілген кейбір элементтерді қайтару қажет болуы мүмкін, бірақ олардың күйі әлі дерекқорға жазылмаған.

Мысалы, сізде келесі псевдокод бар

1. select all blue bikes
2. change them all to red
3. select all red bikes

Сіз соңғы сұраныс жасаған жаңа велосипедтерді қайтарғыңыз келеді. Осылайша, NHibernate сұрауды іздеу үшін соңғы сұрауды беру алдында велосипедтерді дерекқорға толтырады.

1
қосылды
Жоқ. Мен жай деп ойлаймын, бұл сіз ойлайсыз, бұл міндеттеме - бұл шын мәнінде шұғылалы. HQL-сұрауыңыз орындалмай тұрып, SQL нұсқасын кірістіруді және жаңартуларды көргендіктен, транзакция жасалмайды. Бұл тек NHibernate деректер базасына жазады. Сіз өзіңізді соңында қайтару кезінде ешқандай қате болмағанын айттыңыз. Ешқандай міндеттеме жоқ.
қосылды автор JB Nizet, көзі
Сіз не айтқанын түсінбеймін. NHibernate дерекқорға жыпылықтайды ма, жоқ па?
қосылды автор Ben Fulton, көзі
Қайтару кезінде ешқандай қате жоқ, бірақ HQL деректері кері қайтарылғаннан кейін бұрынғыдай DB-де. Мен бұл сұрақты түсіндіру үшін өңдеймін.
қосылды автор Ben Fulton, көзі