Witam, pracuje nad aplikacją. Problem mam złożony więc postaram się bardziej ogólnie. Model danych w relacyjnej bazie jest niespójny z obiektowym modelem danych. Nie mogę obsłużyć na poziomie REST API relacji @ManyToOne. Niby wszystko wydaje się okej, póki nie próbuje uzyskać kolekcji, gdzie tworzy mi się nieskończony ciąg wywołań, gdyż podczas mapowania posłużyłem się referencją do obiektu, która posiada kolekcję...
Owner
@Entity
@Table(name = "OWNER")
public class Owner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Integer id;
@OneToMany(mappedBy = "ownerId",
fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private List<Payments> payments;
Payment
@Entity
@Table(name = "PAYMENTS")
public class Payments implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Integer id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "OWNER_ID",
foreignKey=@ForeignKey(name="OWNER_ID"),
nullable = true) // TO FIXED: tymczasowe usunięcie ograniczenia z bazy danych
private Owner ownerId;
Chciałbym móc dodawać do tabeli klucze obce, móc powiązać płatność z jej posiadaczem. Na razie działa mi to tylko częściowo.
@PostMapping("/insert")
void insertOwner(@RequestBody Payments body) {
message.getInfo("insertPayment()", body);
body.setDate(new Timestamp(System.currentTimeMillis()));
paymentsRepository.save(body);
}
Płatność mogę dodać ale nie mogę wskazać na relację klucz obcy bo przy budowania ORM-a posłużyłem się obiektem, w tej sytuacji wystarczyłoby przekazanie liczby ale się nie da. Obsłużyłem co prawda dodanie płatności do tabeli z kluczem obcym ale tym działaniem popsuła mi się metody do wywoływania kolekcji, bo wszystko się zapętla.
* owner
+---------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | text | NO | | NULL | |
| surname | text | NO | | NULL | |
+---------+---------+------+-----+---------+----------------+
* payments
+----------+-----------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------+------+-----+-------------------+-------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| amount | double | NO | | NULL | |
| date | timestamp | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| kind | tinytext | NO | | NULL | |
| owner_id | int(11) | YES | MUL | NULL | |
+----------+-----------+------+-----+-------------------+-------------------
Proszę o wskazówki
Shalomannotation driven development
:D