Spring 如何保存子实体而不保存每个事务的父实体
我正在使用Spring数据JPA存储库。我有一个卡实体和一个交易实体。当用户使用卡执行交易时,我希望同时保存卡和交易(购买/退款)实体。但当用户执行下一个事务时,我只想保存事务实体。我的实体是:Spring 如何保存子实体而不保存每个事务的父实体,spring,jpa,transactions,Spring,Jpa,Transactions,我正在使用Spring数据JPA存储库。我有一个卡实体和一个交易实体。当用户使用卡执行交易时,我希望同时保存卡和交易(购买/退款)实体。但当用户执行下一个事务时,我只想保存事务实体。我的实体是: Card Entity @Entity @Table(name = "CARD") public class Card { @Id private Long card_id; public Long getCard_id() { return card_i
Card Entity
@Entity
@Table(name = "CARD")
public class Card {
@Id
private Long card_id;
public Long getCard_id() {
return card_id;
}
public void setCard_id(Long card_id) {
this.card_id = card_id;
}
private String type;
}
Transaction Entity
@Entity
@Table(name="Transaction")
public class Transaction {
@Id
@SequenceGenerator( name="TRAN_SEQ1", initialValue=5,sequenceName="TRAN_SEQ1", allocationSize=1 )
@GeneratedValue( strategy=GenerationType.SEQUENCE, generator="TRAN_SEQ1")
private long id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "card_id")
private Card card;
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
}
我尝试过以下方法,但在保存时会引发以下异常:
Transaction t = new Transaction();
Card c = cardRepository.getOne(123L);
t.setCard(c);
transactionRepository.save(t);
**Exception :
org.hibernate.PersistentObjectException: uninitialized proxy passed to persist()**
我不确定我错过了什么。有人能在这里指导我吗?您是否尝试添加反向关系
@Entity
@Table(name = "CARD")
public class Card {
@Id
private Long card_id;
@OneToMany
private List<Transaction> transactions = new ArrayList<>();
// Getters and Setters
}
@实体
@表(name=“CARD”)
公务舱卡{
@身份证
私人长卡;
@独身癖
私有列表事务=新的ArrayList();
//接球手和接球手
}
:-你的方法奏效了。我必须如下设置对象:事务t=newtransaction();t.setTransactionId(“E123”);卡c1=新卡();c1.设置卡号(123L);List lst=new ArrayList();t、 设置卡(c1);第1条增补(t);c1.交易记录(l);cardRepository.save(c1);但你们不认为在交易中设置卡片和卡片中的交易列表会使其循环,这是不好的。也可以请你告诉我为什么它不能反向工作。从逻辑上讲,每次使用cardRepository保存事务都没有意义?老实说,我不知道为什么它不起作用,我需要把一些代码放在一起并尝试一下。从理论上讲,您可以拥有TransactionRepo和CardRepo,并且应该保存一张没有任何问题的卡,而无需设置交易和保存交易,您需要设置卡。我相信您应该能够保存交易设置,而无需反向关系,但我以前就错了:)