2010-04-08 21 views
3
@MappedSuperclass 
public abstract class BaseAbstract implements Serializable{ 

private static final long serialVersionUID = 1L; 

protected String test = //some random value; 

public String getTest() { 
    return test; 
} 

public void setTest(String test){ 
    this.test = test; 
} 
} 


@Entity 
public class Artist extends BaseAbstract 
{ 
    private static final long serialVersionUID = 1L; 
    private Integer id; 

     @override 
@Transient 
public String getTest() { 
    return test; 
} 
..... 
} 

我的問題是什麼?當我試圖做藝術家的任何操作,通過ID和名稱,測試也越來越保存不應該是這樣的一起...Hibernate的瞬態擴展問題

如果我在baseabstract類getTest()方法上添加相同的瞬態,我看到測試列NOT獲取創建(理想情況下它應該發生),但如果我嘗試重寫該方法添加annotaion在子類中創建測試列...

我不知道爲什麼發生這種情況,因爲當休眠創建藝術家對象和檢查註釋時,它應該看到瞬態註釋出現在藝術家方法getTest()...和不應該在數據庫中創建一個列...

讓我知道如果你需要任何澄清....

任何對此的反應是不勝感激....

謝謝

回答

2

我建議把@Transientprotected String test領域本身,而不是方法。

3

當標記父類爲@MappedSuperclass,你說

堅持它的屬性,每個子類

當你的父類是抽象(你不能實例化一個抽象類別),做如下

@MappedSuperclass 
public abstract class BaseAbstract implements Serializable { 

    @Transient 
    public String getTest() { 

    } 

} 

如果你這樣做不想堅持你的子類getTest財產,再做

@Entity 
public class Artist extends BaseAbstract { 


    @Transient 
    public String getTest() { 

    } 

} 

沒有別的!