我与人和交易有以下关系(在我的情况下是一对一的)。我希望能够保存附加了交易的人员,从而产生两个插入。一个在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返回时没有异常,但它只插入事务而不是人。
任何人都能告诉我我做错了什么吗?
答案 0 :(得分:0)
您需要在Transaction类中定义@OneToOne字段 喜欢这个问题: @OneToOne bidirectional mapping with @JoinColumn
然后添加以下行:
transcation.setPerson(person);