2010-04-08 5 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; 
} 
..... 
} 

Мой вопрос ... когда я пытаюсь сделать любую операцию на художника, наряду с идентификатором и именем, тест также получение сохраненным, который не должен быть случай ...Hibernate Transient Расширяет проблему

Если я добавлю тот же переход к методу baseabstract class getTest(), я вижу, что столбец NOT не создается (в идеале, что это должно произойти), но если я попытаюсь переопределить метод с добавлением annotaion в подкласс, он создает тест column ...

Я не знаю, почему это происходит с тех пор, как спящий режим создает объект художника и проверяет аннотации, он должен видеть переходный процесс аннотации присутствует на getTest() метода художника ... и не должен создать столбец в базе данных ...

Позвольте мне знать, если вам нужны какие-либо разъяснения ....

Любой ответ на это высоко оценили ....

Спасибо

ответ

2

я предлагаю положить @Transient на самом protected String test поле, а не на методе.

3

Когда вы отмечаете класс Parent как @MappedSuperclass, вы говорите

Упорство его свойства для каждого подкласса

Как ваш класс Родитель абстрактный (Вы не можете создать экземпляр абстрактного класс), сделайте следующее

@MappedSuperclass 
public abstract class BaseAbstract implements Serializable { 

    @Transient 
    public String getTest() { 

    } 

} 

И если вы не хочет сохраняться ваш подкласс getTest свойство, не делать снова

@Entity 
public class Artist extends BaseAbstract { 


    @Transient 
    public String getTest() { 

    } 

} 

ничего другого!

Смежные вопросы