2011-01-03 16 views
2

Ich habe ein Formular, wo ich Details eingeben, aber wenn ich auf Speichern klicke, wird es nicht in der Datenbank gespeichert ... obwohl die Tabelle erstellt wird.Hibernate speichert keine Daten in DB?

Mein Kontakt POJO

package your.intermedix.domain; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="USER") 

public class Contact implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private Long id; 
    private String name; 
    private String email; 
    private String lastname; 
    private String designation; 

    @Id 
    @GeneratedValue 
    @Column(name="USER_ID") 
    public Long getId() { 
     return id; 
    } 

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

    @Column(name="DESIGNATION") 
    public String getDesignation(){ 
     return designation; 
    } 

    public void setDesignation(String designation){ 
     this.designation = designation; 
    } 

    @Column(name="EMAIL") 
    public String getEmail(){ 
     return email; 
    } 

    public void setEmail(String email){ 
     this.email = email; 
    } 

    @Column(name="LASTNAME") 
    public String getLastname(){ 
     return lastname; 
    } 

    public void setLastname(String lastname){ 
     this.lastname= lastname; 
    } 

    @Column(name="FIRSTNAME") 
    public String getName(){ 
     return name; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 


    public String toString() 
    { 
     return "designation = '" + designation + "',email='"+ email +"', lastname='"+ lastname +"', name = '" + name + "'"; 
    } 

} 

My Application-context.xml

<?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:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<!-- Turn on AspectJ @Configurable support --> 

<context:spring-configured /> 
<context:property-placeholder location="classpath*:*.properties" /> 
<context:component-scan base-package="your.intermedix"/> 
<context:annotation-config/> 
<!-- enable the configuration of transactional behavior based on annotations --> 
    <tx:annotation-driven transaction-manager="txManager"/> 

    <!-- a PlatformTransactionManager is still required --> 
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <!-- (this dependency is defined somewhere else) --> 
    <property name="dataSource" ref="myDataSource"/> 
    </bean> 


<!-- Turn on @Autowired, @PostConstruct etc support --> 
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> 
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" /> 


    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="myDataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>your.intermedix.domain.Contact</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.hbm2ddl.auto">create</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://127.0.0.1:3306/spring"/> 
     <property name="username" value="monty"/> 
     <property name="password" value="indian"/> 
    </bean> 
</beans> 

Ich bin nicht irgendeine Art von Störung zu erhalten .... in der Konsole.

Aktualisiert Code ..

package your.intermedix.services; 

import org.hibernate.SessionFactory; 

import org.springframework.orm.hibernate3.HibernateTemplate; 
import org.springframework.stereotype.Service; 

import your.intermedix.domain.Contact; 
import your.intermedix.services.IContact; 

@Service 
public class ContactSerImpl implements IContact { 

    private HibernateTemplate hibernateTemplate; 

     public void setSessionFactory(SessionFactory sessionFactory) { 
      this.hibernateTemplate = new HibernateTemplate(sessionFactory); 
    } 
      @Transactional 
     public void saveContact(Contact contact) { 
      System.out.println("Hello Guru contact"); 
      System.out.println(contact); 
      hibernateTemplate.saveOrUpdate(contact); 
     } 

     public void hello() { 
      System.out.println("Hello Guru"); 
     } 
} 

Meine Service-Klasse, wo ich die print-Anweisungen arbeiten

+0

Können Sie uns den Sicherungscode geben? Ihre Methode, mit der Sie Ihr neues Objekt erstellen und speichern. – Kiva

+0

Sie haben uns Ihre Entität und Konfiguration angezeigt, aber Sie haben uns den relevanten Teil nicht angezeigt. Das heißt, Code behandelt Ihr Formular. – darioo

+0

Code aktualisiert ... Sie können sehen – theJava

Antwort

2

ich weiß nicht, den Frühling-Hibernate Rahmen, aber oft, wenn die Daten nicht geschrieben ist es menas es ist nicht flushed an das Datenpaket. Was gibt Ihnen

System.err.println(hibernateTemplate.getFlushMode()); 
+0

Diese Anweisung wird nicht selbst aufgerufen. – theJava

4

Sie benötigen eine laufende Transaktion. Spring transaction management ist der Weg zu gehen, wenn Sie HibernateTemplate verwenden. Lesen Sie die Dokumentation. Es ist zu lange in einer Antwort enthalten, aber hier ist kurz:

  • Sie einen Transaktionsmanager als Feder Bean definieren müssen
  • Sie benötigen <tx:annotation-driven />
  • Sie benötigen, um Ihre Transaktionsmethoden mit Anmerkungen versehen mit @Transactional
+0

Ich habe meine Hauptpost aktualisiert, wo ich Transaction Manager und andere Sachen hinzugefügt habe. Trotzdem bleibt das Objekt nicht in der Datenbank erhalten. – theJava

+0

@theJava - müssen Sie einen HibernateTransactionManager – Bozho

+0

I aktualisiert mit diesem und funktioniert nicht – theJava

Verwandte Themen