【问题标题】:hibernate one to one relationship mapping, save only inserts child休眠一对一关系映射,只保存插入子
【发布时间】:2017-12-05 02:42:43
【问题描述】:

我与人和交易有以下关系(在我的情况下是一对一的)。我希望能够保存一个附加了事务的人,从而导致两个插入。一个在 tbl_person 中,一个在 tbl_Transaction 中。但以下仅生成一个插入而不是两个。一个插入在 tbl_Transaction 中:

`CREATE TABLE `tbl_person` (
    `ID` char(36) NOT NULL,
    `TransactionID` int(11) DEFAULT NULL,
    PRIMARY KEY (`ID`),
    UNIQUE KEY `TransactionID` (`TransactionID`),
    CONSTRAINT `tbl_person_ibfk_1` FOREIGN KEY (`TransactionID`) 
    REFERENCES `tbl_Transaction` (`TransactionID`)
);

CREATE TABLE `tbl_transaction` (
    `TransactionID` int(11) NOT NULL,
    PRIMARY KEY (`TransactionID`)
);

@Table(name="tbl_person")
@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
@ToString
@Data
public class Person {
    @Id
    @GeneratedValue(generator = "hibernate-uuid")
    @GenericGenerator(name = "hibernate-uuid", strategy = "uuid2")
    @Column(name="ID", nullable = false)
    private String ID;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "transactionId")
    private Transaction transaction;
}

@Table(name="tbl_transaction")
@Entity
@Data
public class Transaction {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer transactionId;
}

public class Service() {
    public void saveTransaction(Transaction transaction) {
        Person person = new Person();
        person.setTransaction(transaction);
        getSessionCurrent().save(person);
    }
}

`

service.saveTransaction(交易);

service.saveTransaction 无异常返回,但它只插入事务而不插入人。

谁能告诉我我做错了什么?

【问题讨论】:

  • 您的代码无法编译。发布一个完整的最小示例来重现问题。

标签: java hibernate hibernate-mapping sql-insert one-to-one


【解决方案1】:

您需要在 Transaction 类中定义一个 @OneToOne 字段 就像在这个问题中指定的那样: @OneToOne bidirectional mapping with @JoinColumn

然后添加这一行:

transcation.setPerson(person);

【讨论】:

  • 在 Person 域对象上,我更改为使用 PrimaryKeyJoinColumn 进行属性交易。现在获得两个插入,但在 tbl_person 的数据库中,事务的外键为空...
  • @starcraftOnCrack 这个链接就是你的答案:stackoverflow.com/a/4028091/1526443
猜你喜欢
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多