Hibernate - deleteByXXX

krgewb

Top Contributor
Es wird eine Exception geworfen.

Mein Code im RestController:
Java:
@RequestMapping(value = "deleteImageOfLayer", method = RequestMethod.POST)
public void deleteImageOfLayer(HttpSession session) {
    logger.info("deleteImageOfLayer() called");
    try {
        layerSettingRepository.deleteById("IMAGE");
    } catch (Exception e) {
        logger.warn("deleteImageOfLayer() -> exception occured");
    }
}

LayerSettingDOMRepository:
Java:
package com.ametras.vision.backend.database.repositories;

import com.ametras.vision.backend.database.entities.LayerSettingDOM;
import org.springframework.data.jpa.repository.JpaRepository;

public interface LayerSettingDOMRepository extends JpaRepository<LayerSettingDOM, String> {

    long deleteById(String id);

}

LayerSettingDOM:
Java:
package com.ametras.vision.backend.database.entities;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import javax.persistence.*;
import java.util.Objects;

@Entity
@Table(name = "LAYER_SETTING", schema = "APF", catalog = "")
@JsonIgnoreProperties(ignoreUnknown = true)
public class LayerSettingDOM {

    private String id;
    private String value;

    @Id
    @Column(name = "ID", nullable = false, length = 255)
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Basic
    @Column(name = "VALUE", nullable = true, length = 20971520)
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        LayerSettingDOM dom = (LayerSettingDOM) o;
        return Objects.equals(id, dom.id) && Objects.equals(value, dom.value);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, value);
    }
}
 

Anhänge

  • adfhhj.png
    adfhhj.png
    2,2 KB · Aufrufe: 1
Es wird eine Exception geworfen.
Welche Ausnahme geworfen wird waere schon irgendwie gut zu wissen, nicht nur fuer uns, sondern auch fuer dich. Zu diesem Zwecke solltest du Fehler nie schlucken, sondern sie dir immer ausgegeben lassen:

Java:
    } catch (Exception e) {
        logger.warn("deleteImageOfLayer() -> exception occured", e);
        // Oder zumindest:
        logger.warn("deleteImageOfLayer() -> exception occured: " + e.getMessage());
    }
 
Java:
deleteImageOfLayer() -> exception occured: org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
 
Ahm...wenn ich mich richtig erinnere bedeutet das dass Spring den Aufruf gerne in einer Transaktion haette, also die Methode "deleteImageOfLayer" muss eine Transaktion sein, spricht mit einer @Transaction Annotierung versehen sein.
 

Zurück
Oben