org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(学生)]

我的项目中的所有CRUD操作都使用Hibernate。它不适用于一对多和多对一的关系。它给了我以下的错误

org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(students)]的类型:java.util.List,在表:College中

然后我又看了一遍这个视频教程。一开始对我来说很简单。但是,我不能让它工作。他说,现在也是这样

org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(students)]的类型:java.util.List,在表:College中

我在互联网上做了一些搜索,有人告诉我这是Hibernate中的一个bug,有人说,通过添加@GeneratedValue,这个错误会被清除,但对我来说不起作用

College.java

@实体
公立学院{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私立大学;
私有字符串集合名;
私人名单<学生>学生;
@OneToMany(targetEntity=Student.class,mappedBy=“college”,fetch=FetchType.EAGER)
公共列表<学生>获取学生(){
留学生;
}
公立学校学生(名单<学生>学生){
这个。学生=学生;
}//省略了其他getter和setter

Student.java

@实体
公立班学生{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私立国际学生;
私有字符串studentName;
私立学院;
@许多酮
@JoinColumn(name=“collegeId”)
公立学院{
返回学院;
}
公立学校(学院){
这个学院=学院;
}//省略了其他getter和setter

Main.java:

公共类主{
私有静态org.hibernate.SessionFactory SessionFactory;
公共静态SessionFactory getSessionFactory(){
if(sessionFactory==null){
initSessionFactory();
}
返回工厂;
}
私有静态同步void initSessionFactory(){
sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();
}
公共静态会话getSession(){
返回getSessionFactory().openSession();
}
公共静态void main(字符串[]args){
Session=getSession();
事务=会话。beginTransaction();
学院=新学院();
学院名称(“MCET博士”);
学生1=新学生();
学生1.设置学生姓名(“彼得”);
学生2=新学生();
学生2.设置学生姓名(“约翰”);
学生1.学院(学院);
学生2.学院(学院);
会话。保存(学生1);
会话。保存(学生2);
commit();
}
}

控制台:

线程“main”org.hibernate.MappingException中的异常:无法确定以下列的类型:java.util.List,位于表:College:[org.hibernate.mapping.Column(学生)]
位于org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:306)
位于org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:290)
位于org.hibernate.mapping.Property.isValid(Property.java:217)
位于org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:463)
位于org.hibernate.mapping.RootClass.validate(RootClass.java:235)
位于org.hibernate.cfg.Configuration.validate(Configuration.java:1330)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1833)
位于test.hibernate.Main.initSessionFactory(Main.java:22)
位于test.hibernate.Main.getSessionFactory(Main.java:16)
位于test.hibernate.Main.getSession(Main.java:27)
at test.hibernate.Main.Main(Main.java:43)

XML:

<?xml版本='1.0'编码='utf-8'?>
<!DOCTYPE hibernate配置公用
“-//Hibernate/Hibernate配置DTD 3.0//EN”
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>
<休眠配置>
<会话工厂>
<!--数据库连接设置-->
&connection=“jdbc.com.property”</jdbc.com>
<property name=“connection.url”>jdbc:mysql://localhost:3306/dummy&lt/property>
<property name=“connection.username”>root</property>
<property name=“connection.password”>1234</property>
<!--JDBC连接池(使用内置接口)-->
<property name=“connection.pool\u size”1</property>
<!--SQL方言-->
<property name=“dialogue”>org.hibernate.dialogue.mysqldialogue</property>
<!--启用Hibernate的自动会话上下文管理-->
<property name=“当前会话上下文类”>线程</property>
<!--禁用二级缓存-->
<property name=“cache.provider\u class”>org.hibernate.cache.NoCacheProvider</property>
<!--将所有执行的SQL回显到标准输出-->
<property name=“show\u sql”>true</property>
<!--在启动时删除并重新创建数据库架构-->
<property name=“hbm2ddl.auto”更新</property>
<mapping class=“test.hibernate.Student”/>
<mapping class=“test.hibernate.College”/>
</session factory>

您正在使用字段访问策略(由@Id annotation确定)。将任何与JPA相关的批注放在每个字段的正上方,而不是getter属性

@OneToMany(targetEntity=Student.class,mappedBy=“college”,fetch=FetchType.EAGER)
私人名单<学生>学生;

发表评论