i have subscription
class , payment
class. when following, doesn't create record in join table. should use intermediate class or possible create such record without it? subscriptionrepository
crudrepository
spring-data.
@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); }
classes:
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; }
payment:
@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 } }
you forgot inject payments in subcription , repository , pojo seem fine
if (payments == null) { payments = new hashset<>(); subscription.setpayments(payments); }
Comments
Post a Comment