Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-08-2011, 15:30   #1
cecce88
Junior Member
 
Iscritto dal: Jun 2007
Messaggi: 24
[JAVA] Problema con Hibernate che non mi cancella le righe dal DB

Salve raga, ho un piccolo problema con HIBERNATE. Quando il controller viene chiamato per eliminare un Poiext dal DB, la pagina di "SucceView" mi compare correttamente, mentre il Poiext non viene cancellato dal DB.
Forse dovrei usare le transazioni\commit ma non mi parte!!
Attendo un vostro aiuto
Grazie in anticipo
Posto qui i file:

PoiextDaoImpl.java
Codice:
package dao;

import dto.Poiext;
import org.hibernate.Session;


import org.hibernate.SessionFactory;
import org.hibernate.hql.ast.util.SessionFactoryHelper;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/** @author vincenzo */

@Component(value = "poiextDao")
public class PoiextDaoImpl implements PoiextDao {

@Autowired

private SessionFactory sessionFactory;

public void insert(Poiext poi){
    Session session= sessionFactory.getCurrentSession();

    session.saveOrUpdate(poi);
    
}



public void delete(int idpoiext){
    String query = "delete from Poiext where idpoiext = "+idpoiext;
    Session session= sessionFactory.getCurrentSession();
    session.createQuery(query);
    
}

}

Poiext.java
Codice:
package dto;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;


/** @author vincenzo */
@Entity
@Table(name = "poiext")

public class Poiext implements Serializable{

@Id
@Column(name = "idpoiext")
private int idpoiext;


@Column(name = "latitudine")
private float latitudine;


@Column(name = "longitudine")
private float longitudine;

@Column(name = "nome")
private String nome;

@Column(name = "info")
private String info;

@Column(name = "img")
private String img;

@Column(name = "indirizzo")
private String indirizzo;

@Column(name = "zona")
private int zona;

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public String getIndirizzo() {
        return indirizzo;
    }

    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getZona() {
        return zona;
    }

    public void setZona(int zona) {
        this.zona = zona;
    }

    public int getIdpoiext() {
        return idpoiext;
    }

    public void setIdpoiext(int idpoiext) {
        this.idpoiext = idpoiext;
    }

    public float getLatitudine() {
        return latitudine;
    }

    public void setLatitudine(float latitudine) {
        this.latitudine = latitudine;
    }

    public float getLongitudine() {
        return longitudine;
    }

    public void setLongitudine(float longitudine) {
        this.longitudine = longitudine;
    }



}
applicationContext.xml
Codice:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- Dice di reperire la configurazione di JDBC nel file /WEB-INF/jdbc.properties -->
<context:annotation-config />




<!-- Bean dedicato a leggere le proprietà di connessione contenute all'interno
del file jdbc.properties -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/poi" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<!-- Inietta il dataSource nella sessionFactory -->
<property name="dataSource" ref="dataSource" />
<!-- Inietta le annotatedClasses cioè quali classi sono da usare per le
operazioni di CRUD (Create, Read, Update & Delete) nel db, al
caricamento dell'applicazione hibernate se non trova le tabelle se
le crea automaticamente in base ai dati nella tue classi -->
<property name="annotatedClasses">
<list>
<value>dto.Poiext</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.use_sql_comments">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
</props>
</property>

</bean>

<!-- Enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory" />

<!-- The services are autodetected labeled with the @Service annotation -->
<context:component-scan base-package="service" />

<!-- The daos are autodetected labeled with the @Component annotation -->
<context:component-scan base-package="dao" />

<bean id="poiextService" class="service.PoiextServiceImpl" />

  <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />

    <bean id="insertpoiextController" class="controller.InsertpoiextController"
     p:poiService-ref="poiextService"   />

<bean id="deletepoiextController" class="controller.DeletepoiextController"
p:poiService-ref="poiextService" />
</beans>

PoiextServiceImpl.java
Codice:
package service;

import dto.Poiext;
import dao.PoiextDao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/** @author vincenzo */
@Service(value = "poiextService")
@Transactional(readOnly = false)
public class PoiextServiceImpl implements PoiextService {

/* Richiama ed inietta un PoiDao */
@Autowired
@Qualifier("poiextDao")
private PoiextDao poiextDao;

/* Implementa il metodo astratto dell'interfaccia PoiService: invoca il
* metodo insert sul dao corrente e gli passa l'oggetto poi ricevuto come
* parametro di input */

public void insertPOI(Poiext poi){
    poiextDao.insert(poi);
}

//public Poiext searchById(int idpoiext){
//    return this.poiextDao.searchById(idpoiext);
//}

public void deletePOI(int idpoiext){
    poiextDao.delete(idpoiext);
}
}
DeletepoiextController.java
Codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import service.*;
import dto.*;




public class DeletepoiextController extends SimpleFormController {


private PoiextService poiService;


public void setPoiService(PoiextService poiService){
this.poiService = poiService;
}

public DeletepoiextController() {
    setCommandClass(Poiext.class);
    setCommandName("poi");
    setSuccessView("helloviewdelete");
    setFormView("deletepoiext");
}

@Override
protected ModelAndView onSubmit(Object command) throws Exception {
    Poiext poi = (Poiext) command;
    int idpoiext=poi.getIdpoiext();
    
    this.poiService.deletePOI(idpoiext);

    ModelAndView mv = new ModelAndView(getSuccessView());


    return mv;
}
}

Ultima modifica di cecce88 : 05-08-2011 alle 15:50.
cecce88 è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2011, 18:04   #2
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
Ciao, perchè non provi a fare in maniera simile al metodo di insert, ossia usando la "Session" di hibernate anche per l'eliminazione?
Qualcosa come
Codice:
public void delete(Poiext poi){
    Session session= sessionFactory.getCurrentSession();
    session.delete(poi);
}
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2011, 16:40   #3
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Se vuoi usare la query per eliminare il record tramite id allora poi devi aggiungere executeUpdate().

Codice:
public void delete(int idpoiext){
    String query = "delete from Poiext where idpoiext = "+idpoiext;
    Session session= sessionFactory.getCurrentSession();
    session.createQuery(query).executeUpdate();
    
}
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2011, 11:33   #4
cecce88
Junior Member
 
Iscritto dal: Jun 2007
Messaggi: 24
ok grazie ragazzi. l'insert e la delete funzionano correttamente. Ora il problema sta nell'update.
Vi spiego il mio procedimento.
Dall'index passo ad una pagina searchtoupdate.jsp dove inserisco l'id del mio DTO in un form e me lo va a ricercare inserendo i campi in nuovo form presente in "update.jsp". TUtto questo è gestito da un controller SearchtoupdateController.java che ha come setFormView(searchtoupdate) e come setSuccessView(update). Nella pagina update.jsp c'è appunto questo form dove posso modificare i campi del DTO e una volta modificati viene mostrata una pagina di conferma della modifica. Anche update.jsp è gestita da un controller chiamato UpdatepoiextController che ha come setFormView(update) e setSuccessView(successUpdate). Tutto questo non funziona. Mi viene generata un NullPointerException nel primo controller. Vorrei sapere innanzi tutto se è giusto il ragionamento!
Grazie
cecce88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Il CEO di Nothing, Carl Pei, avverte: i ...
Serie A, richieste di risarcimento agli ...
Ferrari e Shell fanno una scelta che nes...
Fanatec svela Podium DD: 25 Nm di coppia...
I modelli AI cinesi sono ormai a pochi m...
Netflix diventa la casa globale dei film...
Monitor gaming in forte sconto su Amazon...
500 miliardi di dollari e meno dazi: l'a...
Da Detroit scopriamo le livree di Red Bu...
Microsoft, Meta e Amazon aderiscono al p...
Microsoft integrerà Copilot in Es...
Samsung Internet for Windows: il browser...
Logitech fa sul serio: mouse PRO, tastie...
Spotify aumenta ancora il prezzo del ser...
Bose QuietComfort Ultra (2ª Gen) scendon...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v