黑靈客棧
黑靈的沒啥技術(shù)含量的技術(shù)博客! -> http://zjumty.iteye.com
BlogJava
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
隨筆:204 文章:2 評論:243 引用:0
對于昨天User -- Friend關(guān)系的解決!
昨天在回復(fù)中我寫了一個(gè)別人給我的解決方案。這種方法簡單,但是在數(shù)據(jù)庫的結(jié)構(gòu)上不時(shí)很好。
我自己也找了一個(gè)方法,但是比較麻煩。
從數(shù)據(jù)庫底層做起,原來我的數(shù)據(jù)庫設(shè)計(jì)有問題。
我在用PowerDesigner建立概念模型的時(shí)候有一定問題。對于Friend表我用的是Entity,其實(shí)這個(gè)關(guān)系不應(yīng)該是Entity,而應(yīng)該是Association。如下圖:
這樣在生成物理數(shù)據(jù)模型時(shí)就會(huì)把 host,friend一起作為PK,如果用Entity就只能是FK
這樣的結(jié)構(gòu)如果你用工具生成映射文件和Java文件時(shí)就會(huì)多出一個(gè)FriendID的類,里面有兩個(gè)元素就是host和friend
Friend.hbm.xml的結(jié)構(gòu)如下
<
hibernate-mapping
>
<!--
Auto-generated mapping file from
the hibernate.org cfg2hbm engine
-->
<
class
name
="org.netcatcher.web.model.Friends"
table
="Friends"
schema
="nc"
catalog
="NetCatcher"
>
<
composite-id
name
="id"
class
="org.netcatcher.web.model.FriendsId"
>
<
key-many-to-one
name
="Host"
class
="org.netcatcher.web.model.Customers"
>
<
column
name
="host"
length
="100"
not-null
="false"
/>
</
key-many-to-one
>
<
key-many-to-one
name
="Friend"
class
="org.netcatcher.web.model.Customers"
>
<
column
name
="friend"
length
="100"
not-null
="false"
/>
</
key-many-to-one
>
</
composite-id
>
</
class
>
</
hibernate-mapping
>
FriendID.java如下
public
class
FriendsId implements java.io.Serializable
{
/**/
/*
*
*
*/
private
static
final
long
serialVersionUID
=
3689069555917795889L
;
//
Fields
private
org.netcatcher.web.model.Customers Host;
private
org.netcatcher.web.model.Customers Friend;
//
Constructors
/**/
/*
* default constructor
*/
public
FriendsId()
{
}
//
Property accessors
/**/
/*
*
*/
public
org.netcatcher.web.model.Customers getHost ()
{
return
this
.Host;
}
public
void
setHost(org.netcatcher.web.model.Customers Host)
{
this
.Host
=
Host;
}
/**/
/*
*
*/
public
org.netcatcher.web.model.Customers getFriend ()
{
return
this
.Friend;
}
public
void
setFriend (org.netcatcher.web.model.Customers Friend)
{
this
.Friend
=
Friend;
}
public
boolean equals(Object other)
{
if
( (
this
==
other ) )
return
true
;
if
( (other
==
null
) )
return
false
;
if
(
!
(other instanceof FriendsId) )
return
false
;
FriendsId castOther
=
( FriendsId ) other;
return
(
this
.getHost()
==
castOther.getHost())
||
(
this
.getHost()
==
null
?
false
: (castOther.getHost()
==
null
?
false
:
this
.getHost().equals(castOther.getHost())))
&&
(
this
.getFriend()
==
castOther.getFriend())
||
(
this
.getFriend()
==
null
?
false
: (castOther.getFriend()
==
null
?
false
:
this
.getFriend().equals(castOther.getFriend())));
}
public
int
hashCode()
{
int
result
=
17
;
result
=
37
*
result
+
this
.getHost().hashCode();
result
=
37
*
result
+
this
.getFriend().hashCode();
return
result;
}
}
Friends.java如下:
public
class
Friends implements java.io.Serializable
{
//
Fields
/**/
/*
*
*
*/
private
static
final
long
serialVersionUID
=
3258409517246395959L
;
private
org.netcatcher.web.model.FriendsId id;
//
Constructors
/**/
/*
* default constructor
*/
public
Friends()
{
}
/**/
/*
* constructor with id
*/
public
Friends(org.netcatcher.web.model.FriendsId id)
{
this
.id
=
id;
}
//
Property accessors
/**/
/*
*
*/
public
org.netcatcher.web.model.FriendsId getId ()
{
return
this
.id;
}
public
void
setId (org.netcatcher.web.model.FriendsId id)
{
this
.id
=
id;
}
}
這樣你在添加好友列表時(shí)要這樣:
public
void
addFriend(String hostEmail,String friendEmail)
throws InfrastructureException
{
try
{
HibernateUtil.beginTransaction();
Customers host
=
(Customers)HibernateUtil.getSession()
.load(Customers.
class
,hostEmail);
Customers friend
=
(Customers)HibernateUtil.getSession()
.load(Customers.
class
,friendEmail);
FriendsId fid
=
new
FriendsId();
fid.setHost(host);
fid.setFriend(friend);
Friends f
=
new
Friends(fid);
HibernateUtil.getSession().saveOrUpdate(f);
HibernateUtil.commitTransaction();
}
catch
(HibernateException e)
{
throw
new
InfrastructureException(e);
}
}
注意不能 Host.getFriends().add(f);
因?yàn)閒并不知道是誰加了它!
發(fā)表于 2005-04-28 14:00
黑靈
閱讀(559)
評論(0)
編輯
收藏
所屬分類:
ORM
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
Hibernate3中取得多層數(shù)據(jù)的所產(chǎn)生的n+1 selects問題的解決。
Hibernate3中的更新與刪除
Could not initialize proxy - the owning Session was closed
iBatis實(shí)戰(zhàn)小結(jié)!
一個(gè)困擾了我好幾天的Hibernate+Spring的問題,算是解決了吧!
對于昨天User -- Friend關(guān)系的解決!
這樣的表結(jié)構(gòu)Hibernate映射應(yīng)該是什么樣子?
Hibernate用Mysql的中文問題
caveatemptor中的HibernateUtil
<
2005年4月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
公告
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
隨筆分類
(175)
AJAX(6)
(rss)
DataBase(5)
(rss)
Do everything with Groovy(4)
(rss)
ExtJS
(rss)
J2EE(29)
(rss)
JSF(4)
(rss)
MStar Utility(2)
(rss)
ORM(9)
(rss)
RIA(3)
(rss)
Server配置(2)
(rss)
Struts(1)
(rss)
Tapestry(1)
(rss)
Unix&Linux(32)
(rss)
wap(1)
(rss)
WebWork(4)
(rss)
不編不知道,一編嚇一跳(17)
(rss)
亂七八糟(32)
(rss)
客戶端技術(shù)(1)
(rss)
正則表達(dá)式
(rss)
腳本語言(22)
(rss)
文章分類
(1)
Tomcat(1)
(rss)
博客同道
GENOW
(rss)
遠(yuǎn)離塵囂
常用資源
Martin Fowler
Martin Fowler的文章
最新評論
1.?re: 關(guān)于spring-mvc的InitBinder注解的參數(shù)
這個(gè)里面User與User_是兩個(gè)不同的類
--mmocake
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 黑靈
主站蜘蛛池模板:
AV激情亚洲男人的天堂国语
|
久久精品免费网站网
|
亚洲精品无码av中文字幕
|
免费的黄色的网站
|
99精品热线在线观看免费视频
|
免费的一级黄色片
|
亚洲韩国—中文字幕
|
久久午夜免费鲁丝片
|
亚洲视频免费播放
|
一级毛片免费在线观看网站
|
99re在线视频免费观看
|
99久久亚洲精品无码毛片
|
乱淫片免费影院观看
|
91青青青国产在观免费影视
|
亚洲国产天堂在线观看
|
曰批视频免费40分钟试看天天
|
女人18毛片水真多免费看
|
久久精品国产精品亚洲人人
|
羞羞视频免费网站在线看
|
亚洲va久久久噜噜噜久久
|
羞羞漫画小舞被黄漫免费
|
亚洲国产综合人成综合网站
|
色www永久免费
|
久久精品国产亚洲Aⅴ香蕉
|
亚洲黄色激情视频
|
青青青国产免费一夜七次郎
|
午夜肉伦伦影院久久精品免费看国产一区二区三区
|
av无码免费一区二区三区
|
亚洲国产欧美一区二区三区
|
亚洲人成电影在线播放
|
四虎影视成人永久免费观看视频
|
亚洲jjzzjjzz在线观看
|
一本久久综合亚洲鲁鲁五月天
|
中中文字幕亚洲无线码
|
亚洲av中文无码
|
亚洲精品无码久久久久APP
|
嫖丰满老熟妇AAAA片免费看
|
午夜在线亚洲男人午在线
|
久久青草亚洲AV无码麻豆
|
国内一级一级毛片a免费
|
国产一级一毛免费黄片
|