亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

兩種方式配置Hibernate復合主鍵(修正)

系統 1997 0

數據庫結構

create table component(name varchar(50) not null,
?????????????????????? sex varchar(50) not null,
?????????????????????? description varchar(50),
?????????????????????? primary key(name,sex));

?

主鍵類,一定要實現Serializable接口,并改寫equals和hascode方法

?

package ?component;

import ?java.io.Serializable;

import ?org.apache.commons.lang.builder.EqualsBuilder;
import ?org.apache.commons.lang.builder.HashCodeBuilder;

public ? class ?ComponentPK? implements ?Serializable? ... {
??
private ?String?name;
??
private ?String?sex;

public ?String?getName()? ... {
????
return ?name;
}

public ? void ?setName(String?name)? ... {
????
this .name? = ?name;
}

public ?String?getSex()? ... {
????
return ?sex;
}

public ? void ?setSex(String?sex)? ... {
????
this .sex? = ?sex;
}

public ? boolean ?equals(Object?obj)? ... {
????
if (obj? == ? this )? ... {
????????
return ? true ;
????}

????
????
if ( ! (obj? instanceof ?Component))? ... {
????????
return ? false ;
????}

????
????ComponentPK?componentpk?
= ?(ComponentPK)?obj;
????
return ? new ?EqualsBuilder()
??????????.append(
this .name,?componentpk.getName())
??????????.append(
this .sex,?componentpk.getSex())
??????????.isEquals();
????
??}

??
??
public ? int ?hashCode()? ... {
????
return ? new ?HashCodeBuilder()
??????????.append(
this .name)
??????????.append(
this .sex)
??????????.toHashCode();
??}


}

?

?

package ?component;

public ? class ?Component? ... {
??
private ?String?description;
??
private ?ComponentPK?componentpk;
public ?ComponentPK?getComponentpk()? ... {
????
return ?componentpk;
}

public ? void ?setComponentpk(ComponentPK?componentpk)? ... {
????
this .componentpk? = ?componentpk;
}

public ?String?getDescription()? ... {
????
return ?description;
}

public ? void ?setDescription(String?description)? ... {
????
this .description? = ?description;
}

}

?

HBM文件

?

<? xml?version="1.0"?encoding="utf-8" ?>
<! DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!-- ?
????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools
-->
< hibernate-mapping? package ="component" > ?

??
< class? name ="Component" ?table ="component" > ?
????
< composite-id? name ="componentpk"
??????????????class
="ComponentPK"
??????????????unsaved-value
="any" >
????????
< key-property? name ="name" ?
????????????????column
="name" ?
????????????????type
="java.lang.String" />
????????
< key-property? name ="sex" ?
????????????????column
="sex" ?
????????????????type
="java.lang.String" />
????
</ composite-id >
????
????
< property? name ="description" ?column ="description" ?type ="java.lang.String" />
??
??
</ class > ?

</ hibernate-mapping >

?

?

測試代碼:

?

public ? static ? void ?main(String[]?args)? ... {
????????Configuration?cfg
= new ?Configuration();
????????cfg.configure();
????????SessionFactory?sf
= cfg.buildSessionFactory();
????????Session?session
= sf.openSession();
????????Transaction?t
= session.beginTransaction();
????????
????????ComponentPK?pk
= new ?ComponentPK();
????????pk.setName(
" 1 " );
????????pk.setSex(
" 3 " );
????????
????????Component?component
= new ?Component();
????????component.setComponentpk(pk);
????????component.setDescription(
" 12 " );
????????session.save(component);
????????t.commit();
????????System.out.println(
" success " );

????}

?

?

如果組成復合主鍵的某一個屬性是其他持久話類的話,則需要使用<key many-to-one>

增加表User:

CREATE TABLE `user` (
? `id` varchar(50) NOT NULL,
? `pass` varchar(50) default NULL,
? PRIMARY KEY? (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;??

增加持久化類User及相應的Mapping文件

?

package ?component;

public ? class ?User? ... {
???
private ?String?id;
???
private ?String?pass;
public ?String?getId()? ... {
????
return ?id;
}

public ? void ?setId(String?id)? ... {
????
this .id? = ?id;
}

public ?String?getPass()? ... {
????
return ?pass;
}

public ? void ?setPass(String?pass)? ... {
????
this .pass? = ?pass;
}

}


<?xml?version = " 1.0 " ?encoding = " utf-8 " ?>
<!DOCTYPE?hibernate-mapping?PUBLIC?
" -//Hibernate/Hibernate?Mapping?DTD?3.0//EN "
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd " >
<!--?
????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools
-->
<hibernate-mapping?package
= " component " >?

??<class?name
= " User " ?table = " user " >?
???
????<id?name
= " id " ?column = " id " >
??????<generator?class
= " assigned " ></generator>
????</id>
????<property?name
= " pass " ?column = " pass " ?type = " java.lang.String " />
??
??</class>?

</hibernate-mapping>


修改ComponentPK類

?

package ?component;

import ?java.io.Serializable;

import ?org.apache.commons.lang.builder.EqualsBuilder;
import ?org.apache.commons.lang.builder.HashCodeBuilder;

public ? class ?ComponentPK? implements ?Serializable? ... {
??
private ?String?name;
??
private ?String?sex;
??
private ?User?user;
public ?User?getUser()? ... {
????
return ?user;
}

兩種方式配置Hibernate復合主鍵(修正)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本a∨网站 | 第一福利在线观看永久视频 | 伊人精品在线观看 | 青草青草久热精品视频99 | 在线精品国产一区二区 | 色综合色狠狠天天综合色 | 噜鲁射图片 | 四虎地址| 99久久国产免费福利 | 国产欧美一区二区三区免费 | 亚洲一一在线 | 操亚洲 | 久久国产影视免费精品 | 久草热线| 色老头老太做爰视频在线观看 | 国产精品久久久久久免费播放 | 91欧美在线视频 | 一级片a | 日本一级毛片片在线播放 | 精品久久久影院 | 青青久久国产成人免费网站 | 春色www视频在线观看 | 老色鬼a∨在线视频在线观看 | 久久精品在线 | 九九九精品视频免费 | 天天摸夜夜摸爽爽狠狠婷婷97 | 久久伊人影视 | 深夜精品寂寞在线观看黄网站 | 久久国产美女免费观看精品 | 亚洲欧洲国产精品 | 热久久国产欧美一区二区精品 | 国内精品99| 日本免费小视频 | 精品三级国产一区二区三区四区 | 老湿机午夜影院 | 亚洲欧美日韩久久一区 | 久草视频免费在线观看 | 久久免视频 | 日韩色在线 | 久久毛片视频 | 日本中文字幕一区二区 |