【发布时间】:2020-03-18 11:47:33
【问题描述】:
使用 Spring Boot 2.1.1 和 H2 数据库测试 JPA。
错误
出现意外错误(类型=内部服务器错误,状态=500)。 无法通过反射设置字段值 [ST30790] 值:com.example.demo.model.Student.id 的 [class com.example.demo.model.Student.id] setter;嵌套异常是 org.hibernate.PropertyAccessException:无法通过反射设置字段值 [ST30790] 值:[class com.example.demo.model.Student.id] com.example.demo.model.Student.id 的设置器强>
学生班
package com.example.demo.model;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Student {
@Id
@GeneratedValue(generator = "Student_id")
@GenericGenerator(name = "Student_id", strategy = "com.example.demo.model.StudentGenerator")
private int id;
private String email;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
我的发电机
package com.example.demo.model;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import java.io.Serializable;
import java.util.Random;
public class StudentGenerator extends SequenceStyleGenerator {
private static final String STUDENT_ID_PREFIX = "ST";
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
return STUDENT_ID_PREFIX + String.valueOf(generateID());
}
public static char[] generateID() {
//Creating object of Random class
Random obj = new Random();
char[] otp = new char[5];
for (int i = 0; i < 5; i++) {
otp[i] = (char) (obj.nextInt(10) + 48);
}
System.out.print("Your OTP is : " + otp.toString());
return otp;
}
}
请帮忙
【问题讨论】:
-
您可以尝试将
int替换为Integer吗? -
@SternK 没用!
-
能否请您展示您的休眠配置以及您使用的 H2 版本?
-
我正在使用弹簧靴。这是数据库的属性。 spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:admin
标签: hibernate spring-boot jpa h2