用Hibernate的话只要有外健关联就行import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import junit.framework.TestCase;public class CascadeTest extends TestCase { public CascadeTest(String name) {
super(name);
} Session session = null; protected void setUp() {
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
} protected void tearDown() {
session.close();
} public void testInsert() {
Transaction trans = null;
Tuser1 user = new Tuser1();
user.setAge(20);
user.setName("allen");

Tpassport passport = new Tpassport();
passport.setSerial("CP20080912");
passport.setExpiry(20090101);

user.setPassport(passport);
passport.setUser(user);

trans = session.beginTransaction();
session.save(user);
trans.commit(); }运行完后会在映射的t_user1及t_passport表内分别插入一条数据

解决方案 »

  1.   

    produce, 想怎么弄就怎么弄。
      

  2.   

    如果使用JPA,对于
    1:1/1:M/M:N这样的关系通常可以使用“级联持久化”cascade = CascadeType.Persist,
    而M:1需要看情况,因为如果第一个M设置了他的相应的1实体,那么在对M实体进行持久化时,1实体也会被持久化;但是如果当第二个M实体也和第一个M实体一样关联到同一个1实体,那么当对M的第二个实体进行“持久化”时,并且它的对应的1的实体field/property被设置成1实体,那么则会出错,因为1实体已经存在。当然,如果愿意可以使用merge方法设置关系,但是开销较大。
      

  3.   

    1楼使的是HIBERNATE  2楼说用触发器
    这两种方法都行!! 一般用第一中的多  而第二种则麻烦了一些
    我在提一种  楼主的问题 你要是不用HIBERNATE的话 用事务也行啊!! 插入不进去抛个异常