Jak zbudować prawidłowy ciąg HQL, która jest równoważnaJak wstawić 'null' do kolumny używając HQL?
UPDATE tabela SET pole = null WHERE ....
Jak zbudować prawidłowy ciąg HQL, która jest równoważnaJak wstawić 'null' do kolumny używając HQL?
UPDATE tabela SET pole = null WHERE ....
Czy oznacza luzem HQL aktualizować? Spróbuj tego
UPDATE myEntity e SET e.myProperty = null WHERE ...
Można również użyć parametryczne wersję powyższej
UPDATE myEntity e SET e.myProperty = :param WHERE ...
W kodzie:
int updatedEntities = session.createQuery(updateQueryHQL)
.setString("param", myValue) // or .setString("param", null)
.executeUpdate();
Zobacz documentation szczegóły.
Jeśli nie wykonujesz aktualizacji zbiorczych, powinieneś ustawić właściwość na wartość NULL i normalnie utrzymywać obiekt.
Dzięki, ale ... obie wersje rzucają HibernateException !!! setString ("param", myValue) executeUpdate(); działa tylko wtedy, gdy myValue nie ma wartości NULL !!! –
Jaki rodzaj HibernateException (co mówi błąd)? Czy Twoja tabela dopuszcza wartości NULL w tej kolumnie? Czy ta właściwość jest w rzeczywistości łańcuchem czy jest innego rodzaju? – ChssPly76
1. Kolumna tabeli zezwala na wartości NULL 2. Właściwość jest w rzeczywistości ciągiem (ten sam problem z kolumną typu "Data") 2. Błąd błędu hibernacji jest niestety nieważny ("Brak pozwolenia na aktualizację obiektu .....) . Nie jest prawdą: w przypadku, gdy moja_wartość jest pustym ciągiem lub nie ma wartości null - żądana kolumna jest aktualizowana bez problemów –
Dlaczego twoja instrukcja aktualizacji musi być wykonana w HQL? Czy ta tabela została zmapowana do jednostki w systemie? Jeśli to zrobisz, możesz po prostu ustawić właściwość, która odwzorowuje tę kolumnę na wartość null, i uruchomić zapis na tej encji. na przykład.
myObject.setMyProperty (null); getSessionFactory(). GetCurrentSession(). Save (myObject);
To powinno zadziałać dla ciebie, ale musisz mieć obiekt odwzorowany na tabelę, o której mowa.
może być głupie pytanie, ale czy ta aktualizacja sql działa z niektórych konsoli sql? np. czy może masz ograniczenie NOT NULL w kolumnie "pole"? –
sql jest ok - działa z konsoli w porządku! –