I’m getting this error when I’m trying to save ChatUser object from /showSignUpForm request . The object details are stored successfully in the DB but it gives “jakarta.persistence.TransactionRequiredException: no transaction is in progress” error on on /processSignUpForm
This is my controller class
`@Controller
public class ChatUserController {
@Autowired
private ChatUserService chatUserService;
@GetMapping("/showLoginForm")
public String showLoginForm(Model theModel){
return "login-form";
}
@GetMapping("/showSignUpForm")
public String showSignUpForm(Model theModel) {
theModel.addAttribute("chatUser", new ChatUser());
return "sign-up-form";
}
@PostMapping("/processSignUpForm")
@Transactional
public String processSignUpForm(@ModelAttribute("chatUser") ChatUser chatUser) {
System.out.println(chatUser.toString());
chatUserService.saveChatUser(chatUser);
return "chat-page";
}
}`
This my DAO interface
`public interface ChatUserDAO {
public List<ChatUser> getchatUsers();
public void saveChatUser(ChatUser theChatUser);
public ChatUser getChatUser(int theId);
public void deleteChatUser(int theId);
}
`
DAO Implementation:
`@Repository
public class ChatUserDaoImpl implements ChatUserDAO{
@Autowired
private SessionFactory sessionFactory;
@Override
public List<ChatUser> getchatUsers() {
Session currentSession = sessionFactory.getCurrentSession();
Query<ChatUser> theQuery = currentSession.createQuery("from ChatUser", ChatUser.class);
List<ChatUser> chatUsers = theQuery.getResultList();
return chatUsers;
}
@SuppressWarnings("deprecation")
@Override
public void saveChatUser(ChatUser theChatUser) {
Session currentSession = sessionFactory.getCurrentSession();
currentSession.saveOrUpdate(theChatUser);
}
}
`
This is my ChatUser Entity
`@Entity
@Table(name=”chat_user”)
public class ChatUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private int user_id;
@Column(name="user_name")
private String user_name;
@Column(name="user_email")
private String user_email;
@Column(name="user_password")
private String user_password;
@ManyToMany(fetch=FetchType.LAZY, cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.DETACH,CascadeType.REFRESH })
@JoinTable(
name="group_user",
joinColumns=@JoinColumn(name="user_id"),
inverseJoinColumns=@JoinColumn(name="group_id")
)
private List<ChatGroup> chatGroups;
public ChatUser() {
}
public ChatUser(String user_name, String user_email, String user_password) {
this.user_name = user_name;
this.user_email = user_email;
this.user_password = user_password;
}
}`
This is my Service Class Implementation
`@Service
public class ChatUserServiceImpl implements ChatUserService{
@Autowired
private ChatUserDAO chatUserDao;
@Override
@Transactional
public List<ChatUser> getChatUsers() {
return chatUserDao.getchatUsers();
}
@Override
@Transactional
public void saveChatUser(ChatUser theChatUser) {
chatUserDao.saveChatUser(theChatUser);
}
@Override
@Transactional
public ChatUser getChatUser(int theId) {
return chatUserDao.getChatUser(theId);
}
@Override
@Transactional
public void deleteChatUser(int theId) {
chatUserDao.deleteChatUser(theId);
}
}`
Please help. Thankyou.
though the object is getting saved, but error still persists.
Dhananjai Saini is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.