Java 休眠更改我的字段名
我正在使用以下类和MySQL数据库练习HibernateJava 休眠更改我的字段名,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我正在使用以下类和MySQL数据库练习Hibernate @Entity @Table(name="Student") public class Student { @Id @GeneratedValue private int student_id; private String student_name; @ManyToOne(cascade=CascadeType.ALL) private StudentAddress address;
@Entity
@Table(name="Student")
public class Student {
@Id
@GeneratedValue
private int student_id;
private String student_name;
@ManyToOne(cascade=CascadeType.ALL)
private StudentAddress address;
@Transient
@Temporal(TemporalType.DATE)
private Date birthDay;
public Student() {
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public int getStudent_id() {
return student_id;
}
public void setStudent_id(int rollNo) {
this.student_id = rollNo;
}
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String name) {
this.student_name = name;
}
public StudentAddress getAddress() {
return address;
}
public void setAddress(StudentAddress address) {
this.address = address;
}
}
@Entity
@Table(name="student_address")
public class StudentAddress {
@Id
@GeneratedValue
private int address_id;
private String address_detail;
public int getAddress_id() {
return address_id;
}
public void setAddress_id(int address_id) {
this.address_id = address_id;
}
public String getAddress_detail() {
return address_detail;
}
public void setAddress_detail(String address_detail) {
this.address_detail = address_detail;
}
}
我不断从这些sql语句中得到以下错误消息:
Hibernate: insert into student_address (address_detail) values (?)
Hibernate: insert into Student (address_address_id, student_name) values (?, ?)
错误消息:
Unknown column '**address_address_id'** in 'field list'
我的数据库具有字段名地址\u id
Hibernate不断将地址
附加到地址_id
并更改列名。我可能会在我的数据库中将字段名从address
更改为address\u address\u id
,但发生这种情况的原因是什么。这是Hibernate中的有效行为吗?我可以更改它吗?这是Hibernate用于@manytone
关联的行为:
默认值(仅在使用单个联接列时适用):
下列内容的串联:引用的名称
引用实体或可嵌入实体的关系属性或字段
阶级;"_"; 引用的主键列的名称。如果有
实体中没有此类引用关系属性或字段,或
如果联接用于元素集合,则联接列名为
由以下内容串联而成:实体名称;
"_"; 引用的主键列的名称
要指定所需的列名,请执行以下操作:
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address")
private StudentAddress address;
这解决了我的问题。谢谢。我花了大约1.5个小时想弄明白。