我正在使用netbean ide for Spring项目。我在尝试进行注册(将数据保存在MySQL数据库上)时不断收到无法提交jpa事务的错误。这是错误堆栈:
Role.java电码:
package net.cdac.TMS.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Role() {
}
public Role(String name) {
super();
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
User.java电码:
package net.cdac.TMS.model;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.persistence.JoinColumn;
@Entity
@Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = "uemailid"))
public class User {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "uname")
private String uName;
@Id
@Column(name = "uemailid")
private String uemailid;
private String upassword;
private String usecurityQ;
private String usecurityA;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(
name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
public User() {
}
public User(String email, String password) {
}
public User(String Name, String email, String password, String securityQ, String securityA, Collection<Role> roles) {
super();
this.uName = Name;
this.uemailid = email;
this.upassword = password;
this.usecurityA = securityQ;
this.usecurityA = securityA;
this.roles = roles;
}
public String getUemailid() {
return uemailid;
}
public void setUemailid(String uemailid) {
this.uemailid = uemailid;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
public String getUsecurityQ() {
return usecurityQ;
}
public void setUsecurityQ(String usecurityQ) {
this.usecurityQ = usecurityQ;
}
public String getUsecurityA() {
return usecurityA;
}
public void setUsecurityA(String usecurityA) {
this.usecurityA = usecurityA;
}
public Collection<Role> getRoles() {
return roles;
}
public void setRoles(Collection<Role> roles) {
this.roles = roles;
}
}
login.html代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>User Login</title>
</head>
<body>
<header>
<div class="header-1">
<img class="logo" src="../images/cdacW.png" alt="C-DAC">
</div>
</header>
<div class="form-center">
<div class="center">
<h1>Login</h1>
<form th:action="@{/UserLogin}" method="post">
<!-- error message -->
<div th:if="${param.error}">
<div class="alert alert-danger">Invalid username or
password.</div>
</div>
<!-- logout message -->
<div th:if="${param.logout}">
<div class="alert alert-info">You have been logged out.</div>
</div>
<div class="txt_field">
<input type="text" required>
<span></span>
<label>Email ID</label>
</div>
<div class="txt_field">
<input type="password" required>
<span></span>
<label>Password</label>
</div>
<div class="pass"><a href="/" th:href="@{/forgotPasswordUser}">Forgot Password?</a></div>
<input type="submit" value="Login">
<div class="signup_link">
Not a member? <a href="/" th:href="@{/registration}">Sign-Up</a>
</div>
</form>
</div>
</div>
</body>
</html>
registeration.html电码:
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
</head>
<body>
<header>
<div class="header-1">
<img class="logo" src="../images/cdacW.png" alt="C-DAC">
</div>
</header>
<!-- success message -->
<div th:if="${param.success}">
<div class="alert alert-info">You have successfully registered!</div>
</div>
<div class="registeration-form">
<h1>Register here</h1>
<form th:action="@{/registration}" method="post" th:object="${user}">
<p>Full Name : </p>
<input type="text" name="fullname" placeholder = "Full Name" th:field="*{uName}">
<p>Email id: </p>
<input type="email" name="email" placeholder = "Email Id" th:field="*{uemail}">
<p>Password : </p>
<input type="password" name="password" placeholder = "Password" th:field="*{upassword}" required autofocus="autofocus">
<p>Photo: </p>
<!--input type="image" name="image" placeholder = "your photo"-->
<p>Security Question: </p>
<label for="SecurityQ"> </label>
<select name="securityq" id="securityq" th:field="*{usecurityQ}">
<option value="Your Favourite color ">Your Favourite color</option>
<option value="Your first pet's name">Your first pet's name</option>
<option value="Your mother's maiden name">Your mother's maiden name</option>
<option value="Your first school">Your first school</option>
<option value="Your Favourite food ">Your Favourite food</option>
<option value="The city you live in">The city you live in</option>
</select>
<p>Security Answer : </p>
<input type="text" name="securityA" placeholder = "Your answer" th:field="*{usecurityA}">
<p><button type="submit">Register</button></p>
<h5>Already have an account? </h5>
<h4><a href="/" th:href="@{/UserLogin}"> Login</a></h4>
</form>
</div>
</body>
</html>
用户注册控制器。java代码:
package net.cdac.TMS.web;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import net.cdac.TMS.service.UserService;
import net.cdac.TMS.web.dto.UserRegistrationDto;
@Controller
@RequestMapping("/registration")
public class UserRegistrationController {
private UserService userService;
public UserRegistrationController(UserService userService) {
super();
this.userService = userService;
}
@ModelAttribute("user")
public UserRegistrationDto userRegistrationDto() {
return new UserRegistrationDto();
}
@GetMapping
public String showRegistrationForm() {
return "registration";
}
@PostMapping
public String registerUserAccount(@ModelAttribute("user") UserRegistrationDto registrationDto) {
userService.save(registrationDto);
return "redirect:/registration?success";
}
}
mainController.java代码:
package net.cdac.TMS.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/UserLogin")
public String login() {
return "UserLogin";
}
@GetMapping("/")
public String home() {
return "GuestHome";
}
}
如何删除此错误?此错误的原因是什么?提前感谢您的帮助。
始终检查由引起的任何异常。为你:
Caused by: java.lang.ClassCastException: class net.cdac.TMS.model.User cannot be cast to class java.io.Serializable
让您的User
类实现Serializable,这应该会修复它。
我在使用Hibernate执行数据库更新时遇到了一个问题。当尝试repository.add(Object)操作时,它会给出一个验证异常。 我已经在模型类上添加了验证,但是我试图插入的值似乎满足了要求,所以我不知道问题出在哪里。 如果删除验证注释,repository.add(object)就可以成功完成,即。 好心看看有没有什么建议,提前谢谢。 MySQL(8.0.17)模式 Hibernate
为什么测试用例需要@Transactional,其功能将在dao层中进行更新(JPA存储库),比如 当测试在没有@Transaction注释的情况下运行时,它会在行中给出以下异常 组织。springframework。刀。InvalidDataAccessApiUsageException:执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException
问题内容: 我在正在使用的一个应用程序中使用Spring和Hibernate,但是在处理事务时遇到了问题。 我有一个服务类,该类从数据库中加载一些实体,修改它们的一些值,然后(当所有内容都有效时)将这些更改提交给数据库。如果新值无效(我只能在设置它们后检查),但我不想保留更改。为了防止Spring / Hibernate保存更改,我在方法中抛出异常。但是,这导致以下错误: 这是服务: 这就是我调用
我在一个应用程序中使用Spring和Hibernate,我在处理事务时遇到了问题。 我有一个服务类,它从数据库加载一些实体,修改它们的一些值,然后(当一切都有效时)将这些更改提交给数据库。如果新值无效(我只能在设置它们后检查),我不想保留更改。为了防止Spring/Hibernate保存更改,我在方法中抛出一个异常。但是,这会导致以下错误: 这就是服务: 我就是这样调用它的: 我希望发生的事情是:
我试图使用Selenium/Java为我的自动化脚本运行maven项目。但是,当我执行mvn test命令时,测试并没有运行。请让我知道当我尝试运行maven项目时,cucumber测试没有被执行的问题是什么。 下面是我的pom.xml文件
我有一个带MySQL的Spring Boot应用程序JPA。在我的控制器中,当我发布一个实体时,我可以调用存储库。保存,然后返回“创建/更新”对象。 但是,当我查看数据库时,我看到对象没有更新。 这是我的application.yml: 你知道我还要做什么吗? 这是我的控制器: 和MyEntityService: