user3715927
user3715927

Reputation: 113

Hibernate forming the query wrong for insert

I have a registration page, which values I am trying to insert values into the mysql DB.

The code as below

Controler Class

        @RequestMapping(value="/register",method=RequestMethod.POST)
public String registerDetails(@ModelAttribute("register")Register register)
{
    boolean result=registerService.registerDetails(register);
    if(result)
    return "register";
    else
        return "error";
}

ServiceClass

@Override
@Transactional
public boolean registerDetails(Register register) {
    // TODO Auto-generated method stub
    registerDAO.registerDetails(register);
    return true;
}

DAO Class

    @Override
    public boolean registerDetails(Register register) {
    // TODO Auto-generated method stub
        Session session = this.sessionFactory.getCurrentSession();
    session.persist(register);
    return true;
}

config xml file

<!-- DispatcherServlet Context: defines this servlet's request-processing 
    infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
    up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
    in the /WEB-INF/views directory -->
<beans:bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <beans:property name="url"
        value="jdbc:mysql://localhost:3306/nodedb" />
    <beans:property name="username" value="root" />
    <beans:property name="password" value="rJGonEQQCrshs81f5LJg0naD+wsG49slpGgldbRJRFo=" />
</beans:bean>

<!-- Hibernate 4 SessionFactory Bean definition -->
<beans:bean id="hibernate4AnnotatedSessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <beans:property name="dataSource" ref="dataSource" />
    <beans:property name="annotatedClasses">
        <beans:list>
            <beans:value>com.journaldev.spring.model.Person</beans:value>
                <beans:value>com.journaldev.spring.model.Register</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="hibernateProperties">
        <beans:props>
            <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
            </beans:prop>
            <beans:prop key="hibernate.show_sql">true</beans:prop>
        </beans:props>
    </beans:property>
</beans:bean>

<beans:bean id="personDAO" class="com.journaldev.spring.dao.PersonDAOImpl">
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
</beans:bean>
<beans:bean id="personService" class="com.journaldev.spring.service.PersonServiceImpl">
    <beans:property name="personDAO" ref="personDAO"></beans:property>
</beans:bean>
<beans:bean id="registerDAO" class="com.journaldev.spring.dao.RegisterDAOImpl">
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
</beans:bean>
<beans:bean id="registerService" class="com.journaldev.spring.service.RegisterServiceImpl">
    <beans:property name="registerDAO" ref="registerDAO"></beans:property>
</beans:bean>
<context:component-scan base-package="com.journaldev.spring" />

<tx:annotation-driven transaction-manager="transactionManager"/>

<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
</beans:bean>

Model class

 package com.journaldev.spring.model;

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

  @Entity
  @Table(name="Register")
  public class Register {

@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String emailId;
private String fName;
private String lName;
private String password;
private String cpassword;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getEmailId() {
    return emailId;
}
public void setEmailId(String emailId) {
    this.emailId = emailId;
}
public String getfName() {
    return fName;
}
public void setfName(String fName) {
    this.fName = fName;
}
public String getlName() {
    return lName;
}
public void setlName(String lName) {
    this.lName = lName;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getConPassword() {
    return cpassword;
}
public void setConPassword(String conPassword) {
    this.cpassword = conPassword;
}

}

 My DDL query

  CREATE TABLE `Register` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`emailId` varchar(50) NOT NULL DEFAULT '',
`fname` varchar(20) DEFAULT NULL,
 `lname` varchar(20) DEFAULT NULL,
 `password` varchar(20) DEFAULT NULL,
    `conpassword` varchar(20) DEFAULT NULL,
   PRIMARY KEY (`id`)
   ) 

here is the stacktrace

Hibernate: insert into Register (cpassword, emailId, fName, lName, 
password) values (?, ?, ?, ?, ?)
WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 
1054, SQLState: 42S22
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unknown column 
'cpassword' in 'field list'
  Jul 20, 2019 10:48:30 PM org.apache.catalina.core.StandardWrapperValve 
invoke
 SEVERE: Servlet.service() for servlet [appServlet] in context with path 
  [/SpringMVCHibernate] threw exception [Request processing failed; 
 nested 
 exception is org.hibernate.exception.SQLGrammarException: could not 
  execute statement] with root cause
 java.sql.SQLSyntaxErrorException: Unknown column 'cpassword' in 'field 
  list'

Any idea where I am doing wrong ? I am a newbie to this technology and thus a simple question, But I feel there is slight mistake and I am not able to figure it out.

Upvotes: 1

Views: 494

Answers (1)

user404
user404

Reputation: 2028

In your table column name is conpassword but in model class it is cpassword. May be you have changed the name later and setters are still like that way. So, you can rename them in same way, then regenerate the setter(to avoid misunderstanding) again , delete the table and try building/running your project again.

Hope, this will work

Upvotes: 1

Related Questions