Я знаю, что этот вопрос может быть простым, но, во всяком случае, я хочу, чтобы реализовать простой родитель-потомок в одной таблице, используя спящий режим:Наследования между объектами в пределах одной таблицы
Parent
| \
Child1 Child2
| |
Junior1 Junior2
так это должно выглядеть следующим образом в базе данных:
id | name | parent_id
1 Parent null
2 Child1 1
3 Child2 1
4 Junior1 2
5 Junior2 3
в случае @Entity класса:
@Entity
@Table(name = "PARENT_CHILD")
public class ParentChild {
@Id
@Column(name = "ID", nullable = false, unique = true)
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "NAME", nullable = false)
private String name;
private String parentId; // <------ how this should be mapped?
}
Что такое наилучшей практикой в отношении того, как я должен сопоставить parentId или сделать следующий способ? Спасибо
Привет, Le Тхо! Спасибо за ответ! Я уверен, что мне не нужен родительский идентификатор напрямую, так как я не получу parentId, а объект ParentChild. Итак, я думаю, мне нужен полный частный родитель ParentChild; поле, правильно? – ServerSideCat
Да. то нужно просто сопоставление @ManyToOne. –
, когда мой dao пытается его создать, он получает исключение: вызвано: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: не удается удалить или обновить родительскую строку: ограничение внешнего ключа завершается с ошибкой ('test_db'.'PARENT_CHILD' , CONSTRAINT 'FK_5ghn6rityqie7cnwp5i5tf2ou' ИНОСТРАННЫЙ КЛЮЧ (' PARENT_ID') ССЫЛКИ 'PARENT_CHILD' (' ID')) Что это может быть? – ServerSideCat