黑靈客棧
黑靈的沒啥技術含量的技術博客! -> http://zjumty.iteye.com
BlogJava
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
隨筆:204 文章:2 評論:243 引用:0
對于昨天User -- Friend關系的解決!
昨天在回復中我寫了一個別人給我的解決方案。這種方法簡單,但是在數據庫的結構上不時很好。
我自己也找了一個方法,但是比較麻煩。
從數據庫底層做起,原來我的數據庫設計有問題。
我在用PowerDesigner建立概念模型的時候有一定問題。對于Friend表我用的是Entity,其實這個關系不應該是Entity,而應該是Association。如下圖:
這樣在生成物理數據模型時就會把 host,friend一起作為PK,如果用Entity就只能是FK
這樣的結構如果你用工具生成映射文件和Java文件時就會多出一個FriendID的類,里面有兩個元素就是host和friend
Friend.hbm.xml的結構如下
<
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;
}
}
這樣你在添加好友列表時要這樣:
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);
因為f并不知道是誰加了它!
發表于 2005-04-28 14:00
黑靈
閱讀(553)
評論(0)
編輯
收藏
所屬分類:
ORM
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Hibernate3中取得多層數據的所產生的n+1 selects問題的解決。
Hibernate3中的更新與刪除
Could not initialize proxy - the owning Session was closed
iBatis實戰小結!
一個困擾了我好幾天的Hibernate+Spring的問題,算是解決了吧!
對于昨天User -- Friend關系的解決!
這樣的表結構Hibernate映射應該是什么樣子?
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)
客戶端技術(1)
(rss)
正則表達式
(rss)
腳本語言(22)
(rss)
文章分類
(1)
Tomcat(1)
(rss)
博客同道
GENOW
(rss)
遠離塵囂
常用資源
Martin Fowler
Martin Fowler的文章
最新評論
1.?re: 關于spring-mvc的InitBinder注解的參數
這個里面User與User_是兩個不同的類
--mmocake
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 黑靈
主站蜘蛛池模板:
久久99热精品免费观看牛牛
|
亚洲国产激情在线一区
|
亚洲AV女人18毛片水真多
|
精品国产sm捆绑最大网免费站
|
日本亚洲成高清一区二区三区
|
亚洲免费视频播放
|
亚洲国产精品久久久久
|
国产白丝无码免费视频
|
亚洲网址在线观看你懂的
|
免费无码成人AV在线播放不卡
|
亚洲国产精品不卡在线电影
|
嫩草成人永久免费观看
|
久久亚洲国产精品成人AV秋霞
|
久久免费国产视频
|
亚洲卡一卡2卡三卡4卡无卡三
|
一区二区三区四区免费视频
|
亚洲国产精品久久66
|
亚洲国产精品免费观看
|
国产精品亚洲一区二区麻豆
|
无码国模国产在线观看免费
|
免费又黄又爽又猛大片午夜
|
国产成人亚洲综合
|
日本免费在线中文字幕
|
亚洲三级视频在线观看
|
国产免费AV片在线播放唯爱网
|
色噜噜噜噜亚洲第一
|
亚洲人成网77777亚洲色
|
日韩精品无码免费一区二区三区
|
sss日本免费完整版在线观看
|
亚洲色自偷自拍另类小说
|
日韩免费高清大片在线
|
亚洲 欧洲 日韩 综合在线
|
四虎影库久免费视频
|
人人玩人人添人人澡免费
|
亚洲国产综合自在线另类
|
国产成人免费一区二区三区
|
三年在线观看免费观看完整版中文
|
4444亚洲国产成人精品
|
免费高清在线爱做视频
|
伊人免费在线观看
|
亚洲黄页网在线观看
|