0

我创建了一个使用休眠继承和映射的应用程序。有一个名为 Payment 的父类和一个名为 Credit 的子类。是的,我正在尝试为一个父 ID 插入多个子值。如下图所示

|``````````````|
|    Payment   |
|--------------|
| id  |  nane  |
|-----|--------|
|  1  |  mod 1 |
|-----|--------|
|  2  |  mod 2 |
|-----|--------|


|````````````````````````````````|
|              Credit            |     
|--------------------------------|
| id  |  payid | type  |  mode   |
|-----|--------|-------|---------|
|  1  |   1    |   1   |   m1    |
|-----|--------|-------|---------|
|  2  |   1    |   4   |   m6    |
|-----|--------|-------|---------|
|  3  |   1    |   5   |   m5    |
|-----|--------|-------|---------|
|  4  |   1    |   1   |   m7    |
|-----|--------|-------|---------|

我的代码如下所示(有关映射和其他详细信息,您可以查看

Payment tabletcstatus=new Payment();
    tabletcstatus.setName("name 123");
    session.save(tabletcstatus);


    Credit c=new Credit();
    c.setMode("mode 1");
    c.setPayid(tabletcstatus);
    session.save(c);


    Credit c1=new Credit();
    c1.setMode("mode 2");
    c1.setPayid(tabletcstatus);
    session.save(c1); 

但是当我执行时,我正在执行以下操作

Hibernate: insert into hhh.payment (name) values (?)
Hibernate: insert into hhh.payment (name) values (?)
Hibernate: insert into credit (type, mode, payid) values (?, ?, ?)
Hibernate: insert into hhh.payment (name) values (?)
Hibernate: insert into credit (type, mode, payid) values (?, ?, ?)

这里付款被插入三次,两个信用有不同的payid

谁能告诉我一些解决方案。

4

1 回答 1

1

好吧,您的映射有点“异国情调”,因为您有 Credit extends Payment 并且 Payment 也有一系列信用。不是我遇到的东西,但我想,如果这真的是你想要的,那么它应该可以工作。

关于第一个问题,您希望支付多少个条目?您创建了三个“付款”1 x Payment 和 2 x Credits,并且正在使用 Joined Table 策略,因此 3 次插入是完全正确的。

于 2013-11-08T08:51:34.247 回答