gpt4 book ai didi

java - Spring 数据 : How to write a record in join table for unidirectional one-to-may?

转载 作者:行者123 更新时间:2023-11-29 09:27:37 38 4
gpt4 key购买 nike

我有一个Subscription 类和Payment 类。当我执行以下操作时,它不会在连接表中创建记录。我应该使用中间类还是可以在没有它的情况下创建这样的记录? subscriptionRepository 是来自 Spring-Data 的 CrudRepository

@Transactional
public Subscription activate(@Valid Subscription subscription, @Valid Payment payment) {
Set<Payment> payments = subscription.getPayments();
if (payments == null)
payments = new HashSet<>();

payments.add(payment);

return subscriptionRepository.save(subscription);
}

类:

订阅:

@Entity
public class Subscription {
...
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
joinColumns = {@JoinColumn(name = "subscription_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "payment_id", referencedColumnName = "id", unique = true)}
)
@Getter @Setter
private Set<Payment> payments;
}

付款方式:

@Entity
public class Payment {
@Column
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@JsonIgnore
private Integer id;

@Column(nullable = false)
private PaymentType paymentType;

@Past
@Column(nullable = false)
private Date date;

public enum PaymentType {
MONEY,
PROMO_CODE,
TRIAL
}
}

最佳答案

你忘了在订阅中注入(inject)付款,你的存储库和 pojo 看起来还不错

if (payments == null) {
payments = new HashSet<>();
subscription.setPayments(payments);
}

关于java - Spring 数据 : How to write a record in join table for unidirectional one-to-may?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143543/

38 4 0