Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何保存子实体而不保存每个事务的父实体_Spring_Jpa_Transactions - Fatal编程技术网

Spring 如何保存子实体而不保存每个事务的父实体

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

我正在使用Spring数据JPA存储库。我有一个卡实体和一个交易实体。当用户使用卡执行交易时,我希望同时保存卡和交易(购买/退款)实体。但当用户执行下一个事务时,我只想保存事务实体。我的实体是:

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,并且应该保存一张没有任何问题的卡,而无需设置交易和保存交易,您需要设置卡。我相信您应该能够保存交易设置,而无需反向关系,但我以前就错了:)