用户登录
用户注册

分享至

hibernate改主键

  • 作者: 那晚越女说我?
  • 来源: 51数据库
  • 2021-01-20
在hibernate中一对一关系可以主键修改
  在hibernate中的配置则要注意两点,第一:两张表一定要建立级联操作,第二:其中一张表的主键必须有一个class=“foreign”,关键配置如下:
  实体A(丈夫):
  
  实体B(妻子):
  
  myMan
  
  

  
  另外,我发现如果在使用MySQL时,在hibernate中设置主键自增时,设成native将会报错,最好使用increment。
  ②唯一外键约束(注意唯一两字)
  对象关系不变
  表的建立不一样了,我们用公民与身份证的例子来说明,给公民一个唯一的表示身份证id的标识,,因为是唯一标识,所以建在那张表上没有区别
  表结构是:
  t_citizen
  t_id int primary key
  t_name String
  t_carId int
  以及
  t_card
  t_id int primary key
  t_name string
  至于hibernate配置,这种情况可以看做多对一的一种特例;
  对公民实体:
  
  对于身份证而言:
  




  在hibernate中一对一关系可以主键修改 在hibernate中的配置则要注意两点,第一:两张表一定要建立级联操作,第二:其中一张表的主键必须有一个class=“foreign”,关键配置如下: 实体a(丈夫): <one-to-one name="mywife" class="...wifepo" cascade="all"→级联操作></one-to-one> 实体b(妻子): <id ...> <generator class="foreign"→表示这个表的主键依赖于另一张表的主键(主键约束) <para name="property">myman</para> </generator> </id> <one-to-one name="myman" class="...hasband"></one-to=one> 另外,我发现如果在使用mysql时,在hibernate中设置主键自增时,设成native将会报错,最好使用increment。 ②唯一外键约束(注意唯一两字) 对象关系不变 表的建立不一样了,我们用公民与身份证的例子来说明,给公民一个唯一的表示身份证id的标识,,因为是唯一标识,所以建在那张表上没有区别 表结构是: t_citizen t_id int primary key t_name string t_carid int 以及 t_card t_id int primary key t_name string 至于hibernate配置,这种情况可以看做多对一的一种特例; 对公民实体: <many-to-one name="citizenpo" class="..." cascade="all"→这里是必须得,因为另一张表依赖于这张表,没有这条会报错。unique="true"→唯一的 column=""/> 对于身份证而言: <one-to-one name="citizen" class="" property-ref="card"→表明这是通过外键加载 cascade="all" →这句不写 在存身份证表的时候公民表不会更新/>
软件
前端设计
程序设计
Java相关