Es gibt zwei Entitäten:
1. Status (zwei Spalten: statusId-Status)
z. Werte: 1 ACTIVE, 2 INACTIVE usw.)
2. Coupon (drei Spalten: couponId title statusId)
z.B. Werte: 10 Orangen 1, 20 Äpfel 2, etc.)JPA-Entity-Beziehung zum Verweisen auf den Wert, aber zum Aktualisieren der referenzierten Entität
Versuchen, herauszufinden, welche Beziehung verwendet werden soll und wie. Ich habe OneToOne, OneToMany, ManyToOne, ManyToMany usw. ausprobiert, aber jedes Mal, wenn die Status-Entität eine neue Zeile erhält, wird
z.B. 21 ACTIVE, 22 ACTIVE, 23 Active usw.
Die Coupon-Entität sollte jedes Mal, wenn ein neuer Coupon gespeichert wird, eine neue Zeile erhalten und den Primärschlüssel des Status im Status-ID-Feld verwenden, aber die Statusentität sollte einen neuen erhalten Zeile hinzugefügt.
Yes, Many coupons can share the same status.
The following code produces the following results
Before execution
Status Table
StatusId STATUS
1 ACTIVE
2 INACTIVE
Coupon Table
CouponId Title STATUS
<no rows at present>
After execution
Status Table
StatusId STATUS
1 ACTIVE
2 INACTIVE
3 ACTIVE (This row should not get inserted)
Coupon Table
CouponId Title StatusId
10 Apples 3 (StatusId should be 1 instead of 3)
JSON Request:
{
"title": "Apples",
"status": "ACTIVE",
}
Code:
@Autowired
CouponRespository couponRepository;
@RequestMapping(value = "/coupon", method = RequestMethod.POST)
void createCoupon(@RequestBody Coupon coupon) {
couponRepository.save(coupon);
}
public interface CouponRespository extends JpaRepository<Coupon, Long> {
}
@Entity
public class Status implements Serializable {
@Id
@SequenceGenerator(name = "STATUS_STATUSID_GENERATOR", sequenceName = "STATUS_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "STATUS_STATUSID_GENERATOR")
@Column(name = "STATUS_ID")
private long statusId;
@Column(name = "STATUS")
private String status;
}
@Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "couponId")
@JsonIgnoreProperties({ "statusId" })
public class Coupon implements Serializable {
@Id
@SequenceGenerator(name = "COUPON_COUPONID_GENERATOR", sequenceName = "COUPON_ID_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "COUPON_COUPONID_GENERATOR")
@Column(name = "COUPON_ID")
private long couponId;
@Column(name = "TITLE")
private String title;
@Column(name = "STATUS_ID")
private Long statusId;
// Need help here how to set this up properly
@ManyToOne(cascade = { CascadeType.ALL })
@JoinColumn(name = "STATUS_ID", insertable = false, updatable = false)
private Status status;
}
Jede Hilfe wird geschätzt.
Können also viele Gutscheine den gleichen Status haben oder nicht? Wenn ja, dann ist es ein ManyToOne, ansonsten ist es ein OneToOne.Geben Sie den Code ein, den Sie zum Erstellen und Speichern eines Gutscheins verwendet haben, teilen Sie ihm mit, was er erwartet und was er stattdessen tut. –
@JBNizet Der Code wurde hinzugefügt, was erwartet wird und was in der Datenbank aktualisiert wird – David