日積月累
大衛(wèi)的技術(shù)筆記
BlogJava
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆 - 55 文章 - 187 trackbacks - 0
<
2009年2月
>
日
一
二
三
四
五
六
25
26
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
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
Java(37)
JavaScript(6)
Linux(3)
web(4)
我的代碼(2)
數(shù)據(jù)庫(kù)(1)
經(jīng)驗(yàn)(6)
設(shè)計(jì)(1)
隨筆檔案
2009年11月 (3)
2009年9月 (2)
2009年2月 (2)
2008年10月 (1)
2008年9月 (4)
2008年8月 (1)
2008年7月 (1)
2008年6月 (4)
2008年5月 (3)
2008年3月 (5)
2008年2月 (8)
2008年1月 (15)
groovy
搜索
最新評(píng)論
1.?re: Struts2 + jQuery 實(shí)現(xiàn)ajax[未登錄](méi)
@cc
1
--1
2.?re: 采用單例模式還是靜態(tài)方法?
@rocket
spring一般用的就是單例模式去加載。不一定是最好,只是為了方便那些不善于管理類加載的人進(jìn)行大規(guī)模協(xié)作
--老學(xué)生
3.?re: 采用單例模式還是靜態(tài)方法?
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--老學(xué)生
4.?re: 通過(guò)反射獲取方法的參數(shù)和返回值的泛型信息
你自己試過(guò)沒(méi),方法返回值的泛型是無(wú)法獲取的,只能獲取通用類型也就是 的泛型的定義, 別在那誤導(dǎo)人,垃圾
--博主SB
5.?re: 如何在三個(gè)月掌握三年的經(jīng)驗(yàn)(轉(zhuǎn)載&&筆記)
學(xué)到不少,謝謝分享!
--llwj
閱讀排行榜
1.?數(shù)據(jù)庫(kù)設(shè)計(jì)5步驟(收藏)(88653)
2.?Struts2 + jQuery 實(shí)現(xiàn)ajax(41961)
3.?如何在三個(gè)月掌握三年的經(jīng)驗(yàn)(轉(zhuǎn)載&&筆記)(20397)
4.?采用單例模式還是靜態(tài)方法?(20169)
5.?mysql編碼轉(zhuǎn)換搞定(8972)
評(píng)論排行榜
1.?數(shù)據(jù)庫(kù)設(shè)計(jì)5步驟(收藏)(48)
2.?一個(gè)計(jì)算機(jī)專業(yè)學(xué)生幾年的編程經(jīng)驗(yàn)匯總(收藏)(17)
3.?Struts2 + jQuery 實(shí)現(xiàn)ajax(17)
4.?對(duì)一個(gè)算法筆試題的注解(12)
5.?采用單例模式還是靜態(tài)方法?(11)
hibernate(jpa)復(fù)合主鍵annotation聲明方法
在設(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候,往往會(huì)設(shè)計(jì)出帶有復(fù)合主鍵的表,即表的記錄由多個(gè)字段聯(lián)合標(biāo)識(shí),如:
表
CREATE TABLE TB_HOUR_DATA
(
STAT_DATE DATE NOT NULL,
PATH_ID NUMBER(
20
) NOT NULL,
VALUE VARCHAR2(
512
BYTE),
TYPE NUMBER(
1
) NOT NULL
)
其中,復(fù)合主鍵為(STAT_DATE,PATH_ID,TYPE)
針對(duì)這種情況,hibernate(jpa) 的 annotation 映射聲明如下:
1、復(fù)合主鍵類HourDataPK
package
net.kong.wolf.stat.db.entity;
import
java.io.Serializable;
import
java.util.Date;
import
javax.persistence.Column;
import
javax.persistence.Embeddable;
import
javax.persistence.JoinColumn;
import
javax.persistence.ManyToOne;
import
javax.persistence.Temporal;
import
javax.persistence.TemporalType;
@Embeddable
public
class
HourDataPK
implements
Serializable
{
/** */
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
@ManyToOne
@JoinColumn(name
=
"
path_id
"
, nullable
=
false
)
private
Path path;
@Column(name
=
"
stat_date
"
)
@Temporal(TemporalType.DATE)
private
Date statDate;
private
int
type;
public
Path getPath()
{
return
path;
}
public
void
setPath(Path path)
{
this
.path
=
path;
}
public
Date getStatDate()
{
return
statDate;
}
public
void
setStatDate(Date statDate)
{
this
.statDate
=
statDate;
}
public
int
getType()
{
return
type;
}
public
void
setType(
int
type)
{
this
.type
=
type;
}
}
2、實(shí)體類HourData:
package
net.kong.wolf.stat.db.entity;
import
java.io.Serializable;
import
javax.persistence.EmbeddedId;
import
javax.persistence.Entity;
import
javax.persistence.Table;
import
net.kong.wolf.stat.core.Text;
@Entity
@Table(name
=
"
TB_HOUR_DATA
"
)
public
class
HourData
implements
Serializable
{
/** */
/**
*
*/
private
static
final
long
serialVersionUID
=
1L
;
@EmbeddedId
private
HourDataPK pk;
private
String value;
public
String getValue()
{
return
value;
}
public
void
setValue(String value)
{
this
.value
=
value;
}
public
int
[] getHours()
{
return
parseValue(value);
}
private
int
[] parseValue(String value)
{
int
[] result
=
new
int
[
24
];
for
(
int
i
=
0
; i
<
24
; i
++
)
{
result[i]
=
-
1
;
}
if
(value
==
null
)
{
return
result;
}
String[] hs
=
Text.splitCSV(value);
int
len
=
Math.min(
24
, hs.length);
for
(
int
i
=
0
; i
<
len; i
++
)
{
result[i]
=
Text.parseInt(hs[i],
-
1
);
}
return
result;
}
public
void
setHours(
int
[] hours)
{
int
[] tHours
=
parseValue(value);
StringBuilder sb
=
new
StringBuilder();
int
len
=
Math.min(
24
, hours.length);
for
(
int
i
=
0
; i
<
len; i
++
)
{
sb.append(hours[i]
<
0
?
tHours[i] : hours[i]).append(
'
,
'
);
}
sb.deleteCharAt(sb.length()
-
1
);
this
.value
=
sb.toString();
}
public
HourDataPK getPk()
{
return
pk;
}
public
void
setPk(HourDataPK pk)
{
this
.pk
=
pk;
}
}
posted on 2009-02-25 14:10
大衛(wèi)
閱讀(3007)
評(píng)論(2)
編輯
收藏
所屬分類:
Java
FeedBack:
#
re: hibernate(jpa)復(fù)合主鍵annotation聲明方法 2009-02-26 10:07
Mr.wang
學(xué)習(xí)
回復(fù)
更多評(píng)論
#
re: hibernate(jpa)復(fù)合主鍵annotation聲明方法
2009-03-03 13:19
相似
有夠爛
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
myAndroid(Struts2+Sitemesh+Freemarker)
我的web.xml(freemarker+stripes+spring)
解決FreeMarker中文亂碼問(wèn)題
防御性編程應(yīng)該適可而止
關(guān)于類的劃分的一點(diǎn)點(diǎn)感悟
hibernate(jpa)中annotation配置非自增字段為主鍵
hibernate(jpa)復(fù)合主鍵annotation聲明方法
判斷是否含有GBK以外的字符
Struts2 + jQuery 實(shí)現(xiàn)ajax
命令行junit
Copyright ©2025 大衛(wèi) Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
亚洲av高清在线观看一区二区
|
西西人体免费视频
|
亚洲免费综合色在线视频
|
亚洲美女中文字幕
|
久久精品国产亚洲av麻豆小说
|
亚洲国语精品自产拍在线观看
|
亚洲AV无码乱码在线观看裸奔
|
一级特黄a免费大片
|
午夜亚洲乱码伦小说区69堂
|
豆国产96在线|亚洲
|
无码毛片一区二区三区视频免费播放
|
亚洲欧洲无码AV电影在线观看
|
久久亚洲av无码精品浪潮
|
国产亚洲精品成人a v小说
|
一本久久a久久精品亚洲
|
国产亚洲无线码一区二区
|
久久精品国产亚洲
|
亚洲色欲或者高潮影院
|
中文无码亚洲精品字幕
|
国产偷国产偷亚洲高清在线
|
一级女性全黄生活片免费看
|
在线人成免费视频69国产
|
91精品全国免费观看含羞草
|
野花高清在线观看免费完整版中文
|
最近免费中文字幕大全视频
|
国产国产成年年人免费看片
|
国产成人综合亚洲AV第一页
|
无码欧精品亚洲日韩一区
|
亚洲乱码一二三四区国产
|
亚洲av无码成人精品区一本二本
|
免费观看又污又黄在线观看
|
久草免费福利视频
|
免费下载成人电影
|
亚洲国产成人久久综合一区77
|
午夜神器成在线人成在线人免费
|
无码国产精品久久一区免费
|
亚洲成片观看四虎永久
|
亚洲av无码乱码国产精品fc2
|
亚洲精品无码MV在线观看
|
亚洲精品中文字幕麻豆
|
亚洲AV成人无码网站
|