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

兩種方式配置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條評論
主站蜘蛛池模板: 一级特级欧美aa毛片免费 | 欧美在线视频7777kkkk | 性欧美成人依依影院 | 中文字幕精品1在线 | 黄色一级毛片在线观看 | 日韩欧美在线观看成人 | 成年人黄色在线观看 | 这里只有精品在线播放 | 欧美一级特黄真人毛片 | 99久久精品无码一区二区毛片 | 精品一区二区三区影片 | 福利在线免费视频 | 国产在线原创剧情麻豆 | 六月婷婷久香在线视频 | 国产爆操| 免费不卡 | 在线色片 | 免费特黄一级欧美大片在线看 | 久久国产香蕉视频 | 日本不卡在线 | 人人揉人人爽五月天视频 | 四虎永久在线精品视频免费观看 | 亚洲毛片免费观看 | 亚洲码和乱人伦中文一区 | 国产情侣普通话刺激对白 | 天天操天天干天天拍 | 亚洲综合一区二区三区 | 日本人一级毛片免费视频 | 免费一级欧美片在线观免看 | 91国内精品久久久久影院优播 | 夜夜摸夜夜操 | 国产日韩精品一区在线观看播放 | 国产精品久久久久免费 | 精品91在线 | 免费精品一区二区三区在线观看 | 九九激情视频 | 99尹人香蕉国产免费天天在线 | 精品一区二区三区免费毛片爱 | 国产精品91视频 | 日韩精品一区二区三区中文精品 | 欧美色爱综合网 |