开发者

Extending hibernate entities with annotation

i need to extend an entity, with the same characteristics without using abstract classes.

can i code something like below?

@Entity
@Table(name="ABC")
@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1)
public class Abc {
.. // define members
}
开发者_运维百科
@Entity
@Table(name="EX_ABC")
public class ExAbc extends Abs {
.. // define extras..
}

thx in advance


Yes, this one works without any problems. However you should have a look at the inheritance annotation.

What's the problem: You have a table "Abc" which contains field1,filed2; Then you have ExAbc which contains the fields of "Abc" and in adition field3. Now, if you think in terms of Databases, what should that system do with these two classes? Put them into a single table letting field3=null for all rows of type "Abc"? or put them into two different tables? or put the common fields in one table and create a second one for the additional filed3?

Each solution has its advantages and disadvantages as you can read in the link i posted, then its up to your situation to decide which is the best way.

(Default I think is the joined strategy, however I would not count on that being so for every database)


See

  • https://forum.hibernate.org/viewtopic.php?f=1&t=958277
  • HIbernate loads subclasses along with classes
  • https://forum.hibernate.org/viewtopic.php?f=1&t=971779
  • Retrieve only the superclass from a class hierarchy
  • http://www.yulebiao.com/questions/757812/hibernate-polymorphism-instantiating-the-right-class

It seems that you MUST have a separate abstract class. And there probably is no technical obstacle not to.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜