У меня есть один вызов Entity Comment
Comment
+ id (PK)
+ fromUserId
+ targetId
+ replyId: Это внешний ключ для id
Идея в том, что comment
может иметь много ответов, но reply
также является comment
.Чтобы провести различие между ними, a comment
будет иметь replyId
, равный -1, а reply
будет иметь значение, отличное от -1, для replyId
.В конечном счете, я хочу, чтобы Comment
имел List
подобный этому
List<Comment> replyList; //So each comment will store all their replies into this List
В JPA я установил OneToMany
связь между двумя сущностями, я создаю список с помощью @OneToMany
и @ManyToOne
аннотация, но в этом случае я не уверен, как это сделать.Пожалуйста, помогите
РЕДАКТИРОВАТЬ
Они способ, которым я создаю комментарий - Макет ответа заключается в том, что одна dataTable находится внутри другой
<h:form id="table">
<p:dataTable value="#{bean.comments}" var="item">
<!-- Original Comment -->
<p:column>
<h:outputText value="#{item.comment}" />
</p:column>
<!-- Reply -->
<p:column>
<p:dataTable value="#{item.replies}" rendered="#{item.replies.size() > 0}" var="item2">
<!-- Print out replies in here -->
<h:outputText value="#{item2.comment}" />
</p:dataTable>
<!-- Text box and commandButton so user can add new reply -->
<h:inputTextarea value="#{...}" />
<p:commandButton value="Post" actionListener="#{bean.addReply(item)}" />
<!-- Assume that I got this working, that a new Comment with correct REPLYTO_ID set -->
</p:column>
</p:dataTable>
</h:form>
Вот моя проблема.Когда я набираю ответ и нажимаю Post
, он правильно создает запись элемента в моей базе данных, а после этого вызывает getReplies()
.В этот момент я предположил, что replies.size() == 1
, однако replies.size()
равно 0. Поэтому я ничего не вижу.Я должен обновить страницу, чтобы она отображалась правильно.Я как бы вижу проблему здесь, поскольку я сгенерировал значение второй таблицы с помощью #{item.replies}
, поэтому, если item
не обновляется до даты, то replies
не обновляется до даты.Не уверен, что это проблема JSF или JPA