
try {
Test t = Test.class.newInstance()//通过class获得一个对象
Field f = Test.class.getField("fname")//拿到字段对象
f.setAccessible(true)//设置为可以访问,不设置的话,下一步访问会失败
f.set(t, "value")//并进行赋值
System.out.print(t.getFname())
} catch (Exception e) {
e.printStackTrace()
}
}
static class Test {
private String fname
public String getFname() {
return fname
}
}
通过java的反射原理
你用的是hibernate4.1版本,在hibernate4.1之后,结构做了比较大的调整,抽象出了Service这个概念,所以,listener从以前的Configuration对象中被抽取了出来,变成了一个服务:EventListenerRegistry,所有的事件监听器都由这个服务产生,所以在hibernate4.1之后,你要注册监听器,要么还是在hibernate.cfg.xml里面配置,要么就在启动的时候:ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(
config.getProperties()).buildServiceRegistry()
EventListenerRegistry listenerRegistry=sr.getService(EventListenerRegistry.class)
listenerRegistry.appendListeners(EventType.REMOVE, MyDeleteEvenetListener.class)
SessionFactory sf = config.buildSessionFactory(sr)
先得到EventListenerRegitry服务,然后注册自己的监听器。希望对你有用。
插入时先插入外键实体,然后用new出来的主键实体的add方法。set属性都会对应有add和del方法的。add之后save就能插入成功了。你说的多余的属性,只要数据库没有设置成not null就可以不赋值。
hibernate在插入的时候会自动获取外键实体的主键,插入到表的对应字段。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)