欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JPA的Embeddable Objects - LalfaShi‘Blog

JPA的Embeddable Objects

[ 2006-11-14 18:27:56 | 作者: LALFASHI ]
字體大小: | |
在hibernate中實(shí)現自定義類(lèi)型,只要實(shí)現UserType接口即可或者以Compnent的形式提供.JPA的@Embedded有點(diǎn)類(lèi)似,通過(guò)此注釋可以在你的Entity中使用一般的java對象,此對象需要用@Embeddable標注

舉個(gè)簡(jiǎn)單例子:Person類(lèi)有一個(gè)name屬性,name應該有firstName,lastName兩個(gè)屬性,一般的寫(xiě)法直接在entity中寫(xiě)兩個(gè)屬性:

private String firstName;

private String lastName;

我們可以用一個(gè)Name類(lèi)來(lái)代替這樣的寫(xiě)法,此類(lèi)包含了firstName和lastName,如此一來(lái),我們在entity只要這樣寫(xiě):

private Name name;

就可以了.那么Name類(lèi)大概是什么樣呢?如下:

package com.denny_blue.ejb3.entity;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
public class Name implements Serializable {
private String firstName;

private String lastName;

public Name() {
}

public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

@Override
public String toString() {
return firstName+ +lastName;
}

}
值的注意的是:

1.必須要實(shí)現serializable接口

2.需要有無(wú)參的構造函數

3.@Embeddable注釋,表示此類(lèi)可以被插入某個(gè)entity中

還沒(méi)完!Person類(lèi)中的name屬性需要與數據庫表中的first,last兩個(gè)字段進(jìn)行映射,如下:
@Embedded
@AttributeOverrides( {
@AttributeOverride(name = firstName, column = @Column(name = first_name)),
@AttributeOverride(name = lastName, column = @Column(name = last_name)) })
public Name getName() {
return name;
}
通過(guò)@AttributeOverride注釋來(lái)指定Name類(lèi)的firstName,lastName與數據庫中表的first_name,last_name進(jìn)行映射.

很簡(jiǎn)單吧,看起來(lái)蠻爽的.可發(fā)現一個(gè)不大不小的缺點(diǎn),比如,我要查詢(xún)一個(gè)姓名dennis zane的人,如果是hibernate,我也許這樣做:

session.createQuery(from Person p where p.name=?).setParameter(0,name).list();

Hibernate將自動(dòng)將你的自定義類(lèi)型進(jìn)行匹配,可如果我在JPA中這樣寫(xiě):

em.createQuery(select p from Person p where p.name=:name).setParameter(name,name);

查詢(xún)出錯...郁悶,把整個(gè)name對象作為查詢(xún)參數傳進(jìn)去就出錯,我非要這樣寫(xiě):

em.createQuery(select p from Person p where p.name.firstName=:name1 and p.name.lastName=:name2).setParameter(name1,name.getFirstName()).setParameter(name2,name.getLastName);

也就是需要你自己去映射N(xiāo)ame的每一個(gè)屬性.
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java中的實(shí)參與形參
AutoMapper簡(jiǎn)明教程(學(xué)習筆記)
ibatis 開(kāi)始之旅
C#泛型之List操作示例
Java集合和數組的排序方式總結 – 碼農網(wǎng)
[Spring MVC]
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久