Софтуерно Инженерство
Loading...
+ Нов въпрос
lapd87 avatar lapd87 98 Точки

[WORKSHOP] Java-EE-Servlets-JSP-JPA - Problem {1} - MeTube

Здравейте колеги,

някой да има проблеми с ъпдейтването на показванията на всяко видео?

this.entityManager.merge(tube);

При мен нещо не се ъпдейтва и не мога да разбера какво се случва...

Прикачвам проекта си защото съм сменил някой неща, но и с оригинала от гитхъба на Радо имам проблем (или не запазва ново видео или не ъпдейтва).

https://www.dropbox.com/s/8s4f021yqgaw8r6/07WorkshopServletsJSPJPA.zip?dl=0

0
Java Web Development Basics
Ivelin_Dimitrov avatar Ivelin_Dimitrov 146 Точки
Пробвай с 

 

@Override
public Tube update(Tube tube) {
    this.entityManager.getTransaction().begin();
    Tube mergedTube = this.entityManager.merge(tube);
    this.entityManager.getTransaction().commit();
    return mergedTube;
}

С flush() промените в данните се отразяват, но все още остават в транзакция готова за commit, но не persist-ва by default. Докато с commit() извършваш транзакцията незабавно и промените са направени в DB. А и ти връщаш подаденото entity, но merge() не променя това entity, а връща ново копие

The EntityManager.merge() operation is used to merge the changes made to a detached object into the persistence context. merge does not directly update the object into the database, it merges the changes into the persistence context (transaction). When the transaction is committed, or if the persistence context is flushed, then the object will be updated in the database.

The result of the merge operation is not the same as with the persist operation - the entity passed to merge does not become managed. Rather, a managed copy of the entity is created and returned. 

1
11/02/2019 13:47:27
lapd87 avatar lapd87 98 Точки

Здравей,

след една камара тестове тогава даже не знам какво оставих, но сега го тествах пак и коригирах леко. Създаването и коригирането сега работят, но.... не ми ъпдейтва в профила броя на видеата след създаване на ново (все едно е кеширано някъде).

това е коригираната имплементация всичко друго е непроменено

https://pastebin.com/ein4cgBN

0
12/02/2019 09:13:44
lapd87 avatar lapd87 98 Точки

изпробвах всичко което намерих за чистене на кеша, но не ми се получава....

https://pastebin.com/gxj050H5

0
MartinBG avatar MartinBG 1152 Точки

В базата ъпдейтва ли се броя на гледнията, както очакваш?

Иначе - както ти е писал и Ivelin_Dimitrov по-горе, в update метода трябва да върнеш резултата от извикването на merge, а не обекта, който си получил отвън и си подал на merge метода.

1
lapd87 avatar lapd87 98 Точки

ъпдейтват се коректно да, ще го коригирам връщането, но не мисля че то е проблем в случая

0
Blagomira avatar Blagomira 1 Точки
Ако проблема е като уплоуднеш видео , че не се показва във профил-страницата, ето така става:
или с refresh. Може да видиш и във фейсбук групата
@Override
public Tube save(Tube entity) {
    this.entityManager.clear();
    this.entityManager.getTransaction().begin();
    this.entityManager.persist(entity);
    this.entityManager.getTransaction().commit();

    return entity;
0
lapd87 avatar lapd87 98 Точки

пробвах да добавя clear но не се ъпдейтват.

Ако можеш копни ми какво са написали във фейсбук по темата (може като pastebin.com линк) защото аз нямам.

0
lapd87 avatar lapd87 98 Точки

Коелеги,

поизчистих глупостите в кода и си направих клас който взема според параметър.

Остава ъпдейта на хоум и профил страницата да оправя, но не знам защо не работи, а сложих всички неща които намерих за изчистване на кеша.

https://www.dropbox.com/s/8s4f021yqgaw8r6/07WorkshopServletsJSPJPA.zip?dl=0

0
Ivelin_Dimitrov avatar Ivelin_Dimitrov 146 Точки

Ако искаш погледни моят, но да те предупредя, че не съм рефактурирал нищо по кода защото аз имам други проблеми на които така и не намирам решение, когато се логна и се пробвам да отворя profile / upload зацикля, не отваря нищо и спинърчето на таба не спира да се върти, трябва да се logout-на и съответно да се логна на ново и тогава ги отваря без проблем. Съответно след като отворя profile и click-на details на някое видео се получава отново същото - при което следва отново logout -> again login и тогава всичко си работи. Не знам дали се получава от WebFilter-те или пък може би от сесията... 

Незнам дали е добра идея, да не взема да те объркам повече... Ти си реши https://www.dropbox.com/s/2135cmnsjokh944/MeTubeV2.zip?dl=0

1
lapd87 avatar lapd87 98 Точки

Прегледах го, но не знам какво се случва и с твоят проблем. И при мен се държи така... Реално доста неща си сменил коригирал спрямо упражнението. Като идея мога да ти предложа да вземеш на Радо решението и клас по клас да подменяш докато се разбере какво се случва, защото сега и дебъгера не сработва.

0
raykov85 avatar raykov85 3 Точки

Не разбрах оправи ли се проблема с update на "views", пуснах твоя проект на моя компютър и броя на гледаня се ъпдейтва и в базата и в браузера?

0