日积月累
大卫的技术笔记
BlogJava
首页
新随笔
联系
聚合
管理
随笔 - 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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
Java(37)
JavaScript(6)
Linux(3)
web(4)
我的代码(2)
数据库(1)
经验(6)
设计(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
搜索
最新评论
1. re: Struts2 + jQuery 实现ajax[未登录]
@cc
1
--1
2. re: 采用单例模式还是静态方法?
@rocket
spring一般用的就是单例模式去加载。不一定是最好,只是为了方便那些不善于管理类加载的人进行大规模协作
--老学生
3. re: 采用单例模式还是静态方法?
评论内容较长,点击标题查看
--老学生
4. re: 通过反射获取方法的参数和返回值的泛型信息
你自己试过没,方法返回值的泛型是无法获取的,只能获取通用类型也就是 的泛型的定义, 别在那误导人,垃圾
--博主SB
5. re: 如何在三个月掌握三年的经验(转载&&笔记)
学到不少,谢谢分享!
--llwj
阅读排行榜
1. 数据库设计5步骤(收藏)(88630)
2. Struts2 + jQuery 实现ajax(41951)
3. 如何在三个月掌握三年的经验(转载&&笔记)(20385)
4. 采用单例模式还是静态方法?(20125)
5. mysql编码转换搞定(8957)
评论排行榜
1. 数据库设计5步骤(收藏)(48)
2. 一个计算机专业学生几年的编程经验汇总(收藏)(17)
3. Struts2 + jQuery 实现ajax(17)
4. 对一个算法笔试题的注解(12)
5. 采用单例模式还是静态方法?(11)
hibernate(jpa)复合主键annotation声明方法
在设计数据库表的时候,往往会设计出带有复合主键的表,即表的记录由多个字段联合标识,如:
表
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
)
其中,复合主键为(STAT_DATE,PATH_ID,TYPE)
针对这种情况,hibernate(jpa) 的 annotation 映射声明如下:
1、复合主键类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、实体类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
大卫
阅读(2997)
评论(2)
编辑
收藏
所属分类:
Java
FeedBack:
#
re: hibernate(jpa)复合主键annotation声明方法 2009-02-26 10:07
Mr.wang
学习
回复
更多评论
#
re: hibernate(jpa)复合主键annotation声明方法
2009-03-03 13:19
相似
有够烂
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
myAndroid(Struts2+Sitemesh+Freemarker)
我的web.xml(freemarker+stripes+spring)
解决FreeMarker中文乱码问题
防御性编程应该适可而止
关于类的划分的一点点感悟
hibernate(jpa)中annotation配置非自增字段为主键
hibernate(jpa)复合主键annotation声明方法
判断是否含有GBK以外的字符
Struts2 + jQuery 实现ajax
命令行junit