Hi,
i am new in spring and create a very small application to get involved. I Used JPA in the backend and spring MVC with JSTL in the frontend. I am able to connect to the database and read a list of object from the database and show it in the frontend. But if i try to add a new entry in the database, there is no insert statement. If i try the config with a java main it worked perfect. Maybe two or more eyes will see the problem.
I used spring 3.1.0M2 if you need more information, please let me know and thanks for your help, here is the code.
applicationContext.xml
model:
Code:
package com.vaannila.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User {
private Long id;
private String name;
private String password;
private String gender;
private String country;
private String aboutYou;
private String[] community;
private Boolean mailingList;
@Id
@GeneratedValue
@Column(name="USER_ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="USER_NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="USER_PASSWORD")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(name="USER_GENDER")
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Column(name="USER_COUNTRY")
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Column(name="USER_ABOUT_YOU")
public String getAboutYou() {
return aboutYou;
}
public void setAboutYou(String aboutYou) {
this.aboutYou = aboutYou;
}
@Column(name="USER_COMMUNITY")
public String[] getCommunity() {
return community;
}
public void setCommunity(String[] community) {
this.community = community;
}
@Column(name="USER_MAILING_LIST")
public Boolean getMailingList() {
return mailingList;
}
public void setMailingList(Boolean mailingList) {
this.mailingList = mailingList;
}
}
dao:
Code:
package com.vaannila.dao;
import java.util.List;
import com.vaannila.domain.User;
public interface UserDAO {
public void saveUser(User user) ;
public List<User> listUser() ;
}
daoImpl:
Code:
package com.vaannila.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vaannila.domain.User;
@Repository("myUserDAO")
@Transactional(readOnly=false)
@Service
public class UserDAOImpl implements UserDAO {
private static String BASEJPA = "SELECT e FROM User e ";
@PersistenceContext
private EntityManager em;
public void saveUser(User user) {
System.err.println("SAVE USER");
em.persist(user);
}
public List<User> listUser() {
System.err.println("LIST USER");
return em.createQuery(BASEJPA, User.class).getResultList();
}
}
controller:
Code:
package com.vaannila.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import com.vaannila.dao.UserDAO;
import com.vaannila.domain.User;
@Controller
public class UserController {
@Autowired
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
@RequestMapping(value="/add")
public String add(User user) throws Exception {
user.setName("setBySystem");
user.setPassword("sadfas");
userDAO.saveUser(user);
return "redirect:list.html";
}
@RequestMapping(value="/list")
public String list(Model model) throws Exception {
model.addAttribute("userList", userDAO.listUser());
model.addAttribute("user", new User());
return "userForm";
}
}
The main who worked very well:
Code:
package com.vaannila.main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.vaannila.dao.UserDAO;
import com.vaannila.domain.User;
public class MainClass {
@Autowired
UserDAO autoUserDAO;
/**
* @param args
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) appContext;
UserDAO myUserDao = factory.getBean(UserDAO.class);
User u1 = new User();
u1.setName("Username");
u1.setPassword("sadfasdfasf");
myUserDao.saveUser(u1);
}
}