Мой простой проект Spring Boot содержит класс Payment с двумя подклассами a) Ca sh и b) Card
Код сущности для класса Payment:
//imports omitted
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name="pay_generic")
public abstract class Payment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreationTimestamp
private Timestamp createdAt;
@UpdateTimestamp
private Timestamp updatedAt;
private Double money;
private String reason;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false)
private User user;
первый подкласс имеет следующий код:
import javax.persistence.*;
@Entity
@Table(name="pay_cash")
@PrimaryKeyJoinColumn(name="id")
public class CashPayment extends Payment{
private Long retailerId;
private Long terminalId;
, а второй подкласс - следующий код / аннотации
import javax.persistence.*;
@Entity
@Table(name="pay_card")
@PrimaryKeyJoinColumn(name="id")
public class CardPayment extends Payment {
@ManyToOne
@JoinColumn(name = "card_id", referencedColumnName = "id", nullable = false)
private Card card;
Когда я отправляю почтовый запрос на http://localhost: 8080 / платежи с телом
{
"money": 4,
"retailerId": 4,
"user": "/users/8"
}
Я заметил, что данные есть только в таблице родительской базы данных. Только один оператор вставки найден в журналах. Таблица pay_generi c содержит данные, однако в подтаблице pay_ca sh нет
Некоторые SQL, которые могут быть полезны:
CREATE TABLE `pay_generic` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`money` decimal(8,2) NOT NULL,
`reason` varchar(45) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_id` int unsigned NOT NULL,
`type` varchar(45) NOT NULL,
PRIMARY KEY (`id`),
KEY `payment_user_fk_idx` (`user_id`),
CONSTRAINT `payment_user_fk` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
)
CREATE TABLE `pay_cash` (
`id` int unsigned NOT NULL,
`retailer_id` int NOT NULL,
`terminal_id` int DEFAULT '0',
KEY `fk1_test_idx` (`id`),
CONSTRAINT `fk1_test` FOREIGN KEY (`id`) REFERENCES `pay_generic` (`id`)
)
Так что вопрос в том, почему дочерняя таблица БД не имеет никаких данных? Я создал проект из весеннего инициала сегодня и БД MySQL.