2014-01-12 58 views
0

如下圖所示,我有2持久性對象車屬性:如何不能承受部分或全部父持久性屬性

public class Car { 

@Column(name = "COLOR") 
protected String color; 

@Column(name = "BRAND") 
protected String brand; 
} 

從汽車擴展使用2個屬性的所有對象,但在一些他們,我想排除一個或所有屬性。 例如:

public class SpecialCar extends Car{ 
    //how to tell here that i don't want to have Brand column 

} 

THX的幫助

+0

好了,我不知道這是可能的如果有什麼是受保護的或公共的或沒有修飾符,那麼它**將被繼承。如果某些東西是「私人」的,它就是**不能繼承。 – Astrobleme

+0

你應該從hibernate中檢出@AttributeOverride註解。例如用於:http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/ – Ben

+1

不要這樣做。如果一個'SpecialCar'延伸一個'Car',那麼對於所有重要的事情來說,它必須表現得像Car一樣(如果一個Car有品牌,那麼它也必須有)。如果你不這樣做,這違反了面向對象軟件的[Liskov替代原則](http://en.wikipedia.org/wiki/Liskov_substitution_principle),這會導致複雜而難以理解/維護軟件。如果你仍然希望SpecialCar有所不同,那麼我建議使用[組合而不是繼承](http://en.wikipedia.org/wiki/Composition_over_inheritance)。 – acdcjunior

回答

0

如果你不希望它在SpecialCar然後,對我來說,這意味着,它不應該是在汽車所有。你不能簡單地將它從汽車中移除嗎?