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

兩種方式配置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條評論
主站蜘蛛池模板: 国产精品亚洲专区在线观看 | 日日夜夜免费视频 | 欧美在线小视频 | 久久精品亚洲日本波多野结衣 | 一级做受毛片免费大片 | 国产精品欧美一区二区在线看 | 国产精品福利视频主播真会玩 | 在线观看亚洲 | 亚洲精品一区二区久久 | 九九精品免费视频 | 亚洲精品成人网久久久久久 | 日日日操 | 奇米影视888狠狠狠777九色 | 手机看片日韩日韩韩 | aaaaaaa毛片 | 欧美亚洲国产激情一区二区 | 青草视频网址 | 色综合久久中文字幕网 | 四虎影院免费看 | 国产精品婷婷久久爽一下 | 五月天久久综合 | 欧美大黄大色一级毛片出红 | 久久视频精品线视频在线网站 | 蜜桃破解版免费看nba | 日韩黄色网 | 亚洲线精品久久一区二区三区 | julia中文字幕在线 | 久久精品三级视频 | 老妇激情毛片免费 | 天天干网站 | 欧美成人三级一区二区在线观看 | 亚洲欧美日韩综合在线 | 欧美人与动人物a级网站 | 一区二区高清视频 | 性丰满妇女free性性性 | 午夜久久久精品 | 一级毛片一级毛片 | 日韩夜夜操 | 天天爽影院一区二区在线影院 | 国产激情一区二区三区在线观看 | 国内永久第一免费福利视频 |