主表有兩個字段映射到副表,可以取得唯一記錄,但這條記錄不定存在,這兩個字段需要做條件過濾,就這個狀況。
Hibernate Annotation 配置的注意點:
- 需要映射字段的@Column屬性設為insertable = false, updatable = false,
- 不產生列重復的異常?
- 在hql解析的時候,自動合并相同的列(參考)
- 類必須implements Serializable,不然會拋ClassCaseException(郁悶4個小時 -_-!)
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)
評論(0) 編輯 收藏 所屬分類:
基礎很重要