查看src\src\com\jboss\dvd\seam \Customer.java文件,可以知道这是一个实体类,并且扩展自User类。其中的注解 @DiscriminatorValue("customer") ,确定了 Customer 子类的鉴别器字段的标志值为“ customer ”,即对应数据表中 鉴别器字段的值等于 “customer ”的记录。
那么,它的鉴别器字段是什么?这需要查看它的父类 User 。定义 鉴别器字段的注解是 @DiscriminatorColumn ,但查看 User.java ,并没有 DiscriminatorColumn 注解。
我们可以看看 JAVAEE5 的文档的描述,链接地址是:
http://java.sun.com/javaee/5/docs/api/javax/persistence/DiscriminatorColumn.html
其中,有一段描述:If the DiscriminatorColumn annotation is missing, and a discriminator column is required, the name of the discriminator column defaults to "DTYPE" and the discriminator type to DiscriminatorType.STRING 。
即如果不指定DiscriminatorColumn注解,鉴别器字段将默认为DTYPE,类型为STRING。
我们再打开 dvdstore 数据库看看表 Users ,定义的字段 果真是 DTYPE。
同样的, 在src\src\com\jboss\dvd\seam \Admin.java 中,定义了@DiscriminatorValue("admin"),意思也就很明显了。
请参考:
JBoss Seam从头学到脚之19---dvdstore例子的理解(2)
http://abelzcg.iteye.com/blog/360671
JPA中的实体层次设计(8)
http://dennnis-zane.blog.sohu.com/12519970.html