黑靈客棧
黑靈的沒啥技術含量的技術博客! -> 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 黑靈
主站蜘蛛池模板:
亚洲国产高清国产拍精品
|
亚洲精品国产第1页
|
极品美女一级毛片免费
|
国产午夜免费福利红片
|
亚洲AV网一区二区三区
|
免费涩涩在线视频网
|
亚洲国产精品精华液
|
国产免费131美女视频
|
在线观看亚洲免费视频
|
亚洲国产免费综合
|
有色视频在线观看免费高清在线直播
|
91频在线观看免费大全
|
亚洲伊人久久大香线焦
|
成人免费视频一区二区三区
|
亚洲日本VA午夜在线电影
|
韩国免费三片在线视频
|
黄色毛片免费观看
|
久久亚洲国产精品一区二区
|
美女内射无套日韩免费播放
|
亚洲国产精品日韩在线观看
|
永久免费AV无码国产网站
|
亚洲日韩精品A∨片无码加勒比
|
国产乱色精品成人免费视频
|
亚洲国产免费综合
|
亚洲av无码乱码国产精品
|
在线看片韩国免费人成视频
|
国产偷国产偷亚洲清高APP
|
久久精品国产亚洲精品
|
嫩草在线视频www免费观看
|
成人区精品一区二区不卡亚洲
|
国产美女做a免费视频软件
|
中文字幕免费播放
|
亚洲国产福利精品一区二区
|
免费a在线观看播放
|
午夜不卡久久精品无码免费
|
亚洲国产精品一区二区三区在线观看
|
亚洲乱码国产一区网址
|
国产免费女女脚奴视频网
|
一级毛片免费观看不收费
|
亚洲色偷偷偷网站色偷一区
|
国产精品免费播放
|