主表有兩個(gè)字段映射到副表,可以取得唯一記錄,但這條記錄不定存在,這兩個(gè)字段需要做條件過(guò)濾,就這個(gè)狀況。
Hibernate Annotation 配置的注意點(diǎn):
- 需要映射字段的@Column屬性設(shè)為insertable = false, updatable = false,
- 不產(chǎn)生列重復(fù)的異常?
- 在hql解析的時(shí)候,自動(dòng)合并相同的列(參考)
- 類(lèi)必須implements Serializable,不然會(huì)拋ClassCaseException(郁悶4個(gè)小時(shí) -_-!)
HQL
select
?s
from
ScopeProjection s?
left
?
join?
fetch?s.overridewhere?s.hubsite=??ands.companyabbr=?
CODE
@Entity
@SequenceGenerator(name
=
"
SEQ_GEN
"
,?sequenceName
=
"
SCOPEPROJECTIONSEQ
"
)
public
?
class
?ScopeProjection?
implements
?Serializable?{
????
private
?Integer?id;
????
private
?String?hubsite;
????
private
?String?companyabbr;
????
private
?ScopeProjectionOverride?override;
????@Id
????@Column(name?
=
?
"
PROJECTIONID
"
)
????@GeneratedValue(strategy?
=
?GenerationType.AUTO,?generator?
=
?
"
SEQ_GEN
"
)
????
public
?Integer?getId()?{
????????
return
?id;
????}
????
public
?
void
?setId(Integer?id)?{
????????
this
.id?
=
?id;
????}
????@Column(name?
=
?
"
HUBSITENAME
"
,?nullable?
=
?
false
,?insertable?
=
?
false
,?updatable?
=
?
false
)
????
public
?String?getHubsite()?{
????????
return
?hubsite;
????}
????
public
?
void
?setHubsite(String?hubsite)?{
????????
this
.hubsite?
=
?hubsite;
????}
????@Column(name?
=
?
"
COMPANYABBREVIATION
"
,?nullable?
=
?
false
,?insertable?
=
?
false
,?updatable?
=
?
false
)
????
public
?String?getCompanyabbr()?{
????????
return
?companyabbr;
????}
????
public
?
void
?setCompanyabbr(String?companyabbr)?{
????????
this
.companyabbr?
=
?companyabbr;
????}
????
????@OneToOne(cascade?
=
?CascadeType.PERSIST)
????@JoinColumns?({
????????@JoinColumn(name?
=
?
"
COMPANYABBREVIATION
"
,?referencedColumnName?
=
?
"
COMPANYABBREVIATION
"
),
????????@JoinColumn(name?
=
?
"
HUBSITENAME
"
,?referencedColumnName?
=
?
"
HUBSITENAME
"
)
????})
????
public
?ScopeProjectionOverride?getOverride()?{
????????
return
?override;
????}
????
public
?
void
?setOverride(ScopeProjectionOverride?override)?{
????????
this
.override?
=
?override;
????}
}
@Entity
@SequenceGenerator(name
=
"
SEQ_GEN
"
,?sequenceName
=
"
SCOPEOVERRIDESEQ
"
)
public
?
class
?ScopeProjectionOverride?
implements
?Serializable?{
????
private
?Integer?id;
????
private
?String?companyabbr;
????
private
?String?hubsitename;
????@Id
????@Column(name?
=
?
"
OVERRIDEID
"
)
????@GeneratedValue(strategy?
=
?GenerationType.AUTO,?generator?
=
?
"
SEQ_GEN
"
)
????
public
?Integer?getId()?{
????????
return
?id;
????}
????
public
?
void
?setId(Integer?id)?{
????????
this
.id?
=
?id;
????}
????@Column(name?
=
?
"
COMPANYABBREVIATION
"
)
????
public
?String?getCompanyabbr()?{
????????
return
?companyabbr;
????}
????
public
?
void
?setCompanyabbr(String?companyabbr)?{
????????
this
.companyabbr?
=
?companyabbr;
????}
????
public
?String?getHubsitename()?{
????????
return
?hubsitename;
????}
????
public
?
void
?setHubsitename(String?hubsitename)?{
????????
this
.hubsitename?
=
?hubsitename;
????}
}
posted on 2007-02-01 23:55
阿姆斯壯 閱讀(1414)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
基礎(chǔ)很重要