对,是Hibernate版本的问题,跟数据库没关系
是的,视频老师有说
在中间表中生成了。
已解决
写全实体类路径 ,包括包的名字。
导入import javax.persistence.Transient;也还是没有效果,用@XMLTransient也没有效果
也可以先保存学生,只要级联关系有就行,先后顺序一样的
主键分为自然主键和代理主键,可以有多个,代理主键只用于区分数据库中的数据,不参与程序的业务逻辑,
自然主键不仅可以区分数据库中的数据,还能参与程序的业务逻辑,一般都是设计成有规律,如实现序列化接口。
错误来自配置文件中的与数据库连接的错误,所以要看看配置数据库的属性信息是否有误
目测你这个写错了<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
card对应是Students实体类中身份证属性card
看一下你的hibernate.cfg.xml 配置文件中
hbm2ddl.auto 该属性配置的是什么
http://hibernate.org/orm/releases/5.2/ 页面挪到下面可以看到最新的jar包5.2.12的,下载好以后解压文件,把里面hibernate-release-5.2.12.Final\lib\required中的文件拷贝出来用就行了
数据库方言改为
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
不写服务注册对象就行
666
是不是设置了级联属性
MySQL中主键自动增长设置为
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
我试了一下,创建数据表的时候最主要的就是config.buildSessionFactory();这一句
@JoinColumn(name="rid", referencedColumnName="cid") //name=定义外键在本表的字段名 referencedColumnName =关联外键对象的哪个字段
那就用java代码或者sql联表查询 根据你查到的一个表的数据 去检索另一个表的数据
已经找到一个实体类对应多个结构相同的数据表的方法了。建一个hibernate的拦截器,在里面修改sql语句的表名,就行了。
好像是 hibernate 版本的问题