У вас есть несколько проблем в вашем JDL. Например, вам не следует смешивать отношения и сущности следующим образом:
entity Post {
owner UserExtended, // <-- This is a problem
content String,
dateCreated LocalDate
}
Если я правильно понял ваши требования, вы захотите создать своего рода блог и позволить пользователям создавать дружеские отношения. JDL не позволит вам добавлять отношения, начиная с основной сущности User
, поэтому вы создали UserExtended
и, возможно, будете хранить там некоторую дополнительную информацию.
Помните, что вы можете создать несколько связей внутри одной relationship
блок. На самом деле, я думаю, что это хорошая практика, которая делает весь JDL более читабельным.
Это должно сделать то, что вам нужно:
entity UserExtended
entity Friend {
status Boolean
modified LocalDate
created LocalDate
}
entity Post {
content String
dateCreated LocalDate
}
entity Like {
dateCreated LocalDate
}
entity Comment {
dateCreated LocalDate
}
relationship OneToOne {
UserExtended{user(login)} to User
}
relationship ManyToOne {
Post{owner} to UserExtended
Comment{postedBy} to UserExtended
Like{likedBy} to UserExtended
Friend{user} to UserExtended
}
relationship OneToMany {
UserExtended{friends} to Friend
Post{likes} to Like
Post{comments} to Comment
}
Единственная сложная часть здесь - это many-to-many
между двумя пользователями в отношениях под названием Friend
. Вам необходимо сохранить некоторую дополнительную информацию о дружбе (статус, изменен, создан), поэтому нам пришлось разделить этот many-to-many
на one-to-many
плюс many-to-one
, используя объект Friend
в качестве таблицы соединения с дополнительными полями.
Я не изменил вашу схему именования, которая, возможно, могла бы быть улучшена.
Не забудьте проверить официальную документацию и дополнительно использовать JHipster Online для Хранение и проверка JDL.