getClass()方法得到的class名称是代理类的名字,也就是Child的名字,我想知道的是怎么区分是Child还是CleverChild
解决方案 »
- j2ee 牛人来帮忙 新手来学习
- Http换成Https的问题。
- 安装rails出错
- 有关HTML代码的另类应用技巧
- struts验证与图片显示之间的矛盾
- 关于会话BEAN结合SPRING和HIBERNATE出现的异常,请高手指点
- 我用的是eclipse3.0 在eclipse/plugins下放了tomcatplugins3.0后,为什么重起eclipse后没有在workbench上找到tomcat???
- 本地接口问题
- 求救!!!<精通EJB(second edition)>中的错误.
- 请问上海有哪些陪训XML的公司?请问兴创电子商务公司如何联系?先谢谢了!(急!!)
- hibernate3.0 难道不支持中文查询吗
- 怎么才能禁止IE上的后退按钮呢?
kid.getClass();你Child kid = new Child(); kid.getClass();当然是Child了
public class Child
{
private Long id;
private Parent parent;
// ...getter/setter方法略去
}
public class CleverChild extends Child
{
}
public class Parent
{
private Long id;
private Child child;
// getter/setter略去
}child.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Child" table="tblChild" discriminator-value="C">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="CLASS_TYPE" type="string"/>
<one-to-one name="parent" class="Parent" property-ref="child"/>
<subclass name="CleverChild" discriminator-value="CC">
</subclass>
</class>
</hibernate-mapping>parent.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="small">
<class name="Parent" table="tblParent">
<id name="id">
<generator class="native"/>
</id>
<many-to-one name="child" class="Child" column="child_ID" unique="true"/>
</class>
</hibernate-mapping>运行代码:
public static void main(String[] args)
{
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction(); Parent parent = (Parent) session.get(Parent.class, new Long(1));
System.out.println(parent.getChild().getClass()); tx.commit();
session.close();}
运行结果:
class small.Child$$EnhancerByCGLIB$$366f5569数据库中确实是CleverChild
lazy (可选 - 默认为 proxy): 默认情况下,单点关联是经过代理的。
lazy="no-proxy"指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。
lazy="false"指定此关联总是被预先抓取。上面这段话是从网上操的,因为不想预先抓取,所以默认了proxy,但是默认的这种情况不知道怎么得到子类的类型?望大牛解答,感激不尽。