
Reply
reply
=
new
Reply()
reply.setid(1)
reply.setTitle("回复:xx")
reply.setContent("楼主SB")
//关键在下面这一句
reply.setTopic(topic)//此句确保reply关联到相应的topic对象
其中topic是一个Topic对象,里面的id必须是数据库已有的id
楼上的cascade='save-update'
是级联save
当配置了cascade属性后
如果reply所关联的topic属性在数据库不存在相应的ID
那么hibernate会级联将topic对象持久化到数据库中
楼主的问题应该不是楼上兄弟的回答
因为即便不配置cascade,只要reply所对应的topic已是持久化或游离对象
hibernate也会为在数据库中为reply的topicid字段添加值
只需要reply.setTopic()就行了
举例订单与客户
多对一关系模型
· 首先是导包 这个省略不写了
· 其次写domain类
分为Client Order两个类 因为是多对一的关系 所以外键应该放在Order这个类里
配置文件 hibernate cfg xml
[java]
<hibernate configuration>
<session factory name= foo >
<property name= nnection driver_class >mysql jdbc Driver</property>
<property name= connection url >jdbc:mysql:///test</property>
<property name= connection username >root</property>
<property name= connection password >root</property>
<property name= dialect >hibernate dialect MySQLDialect</property>
<property name= show_sql >true</property>
<property name= hbm ddl auto >update</property>
<mapping resource= /hbsi/domain/Client hbm xml />
<mapping resource= /hbsi/domain/Order hbm xml />
</session factory>
</hibernate configuration>
定义一个Client的变量
·然后写配置文件 Client hbm xml
<hibernate mapping package= hbsi domain >
<class name= Client table= client >//类名和表名
<id name= id column= id >//变量和字段
<generator class= native />//根据数据库里的设置自定义
</id>
<property name= name />
</class>
</hibernate mapping>
Order hbm xml
<hibernate mapping>
<class name= Order table= ordershop >
<id name= id >
<generator class= native />
</id>
<property name= shopname column= shopname />
<property name= number column= number />
<property name = price column= price />
<many to one name= client column= client_id />
<class>
</hibernate mapping>
配置文件这样就写完了 接下来就是添加查找
Session session=null
@Test
public void add(Client client Order order){
try{
session = HibernateUtil getSession() //获取工具类
session beginTransaction() //开启事务
/*Client client = new Client()
client setName( 刘总 )
Order order = new Order()
order setShopname( 航空母舰 )
order setNumber( )
order setPrice( )
order setCt(client)
Order order = new Order()
order setShopname( 航空母舰 )
order setNumber( )
order setPrice( )
order setCt(client) */
session save(client)
session save(order)
session beginTransaction() mit()
}finally{
if(session!=null){
session close()
}
}
}
public void find(int id){
try{
session = HibernateUtil getSession()
session beginTransaction()
Order order = (Order) session get(Order class id)
System out println(order getCt() getName())
session beginTransaction() mit()
}finally{
if(session!=null){
session close()
}
}
}
测试
public static void main(String[] args ){
Client client = new Client()
client setName( xiao总 )
Order order = new Order()
order setShopname( 美国 )
order setNumber( )
order setPrice( )
order setCt(client)
Order order = new Order()
order setShopname( 日本 )
order setNumber( )
order setPrice( )
order setCt(client)
Many one mo = new Many one()
mo add(client order )
mo find( )
}
关系模型一对多
Client hbm xml
<hibernate mapping package= hbsi domain >
<class name= Client table= client >
<id name= id column= id >
<generator class = native />
</id>
<property name= name />
<set name= order table= ordershop cascade= save update >
<key column= user_id />
<one to many class= Order />
</set>
</class>
</hibernate mapping>
Order hbm xml
<hibernate mapping package= hbsi domain >
<class name= Order table= ordershop >
<id name= id >
<generator class = native />
</id>
<property name= shopname column= shopname />
<property name= number column= number />
<property name= price column= price />
</class>
</hibernate mapping>
添加方法
public void add(Client client Order order){
try{
session = HibernateUtil getSession()
session beginTransaction()
session save(client)
// session save(order)
session beginTransaction() mit()
}finally{
if(session!=null){
session close()
}
}
}
public void find(int id){
try{
session = HibernateUtil getSession()
session beginTransaction()
Client client = (Client) session get(Order class id)
Set<Order>orders =client getOrder()
orders size()
session beginTransaction() mit()
}finally{
if(session!=null){
session close()
}
}
lishixinzhi/Article/program/Java/ky/201311/28399通常是建个HashSet,把多的一方的对象全放到HashSet里,set到一的一方的关联Set属性,再调用一的一方的save *** 作
实际使用中还要注意配置中cascade和inverse的影响,配置不当可能会失败
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)