Ich fand, dass ich die Entity immer noch betreiben könnte, wenn ich sie behalte, z. Setzen Sie die ID des vorherigen Blocks in die priorId des aktuellen Blocks, hier ist der Code.Was passierte, wenn ich persist() in jPA verwende
ArticleService.class
public void createArticle(Article article, List<Block> blocks) throws Exception {
...
//check blocks
if (!blocks.isEmpty()) {
article.setBlocks(blocks);
articleDAO.create(article);
//here is the question, after persisting I can still operate it.
article.setBlocks(BlockUtil.setPriorId(blocks));
} else {
throw new Exception("blocks must be set");
}
...
}
ArticleDAO.class
public void create(Article article) {
em.persist(article);
}
BlockUtil.class
public static List<Block> setPriorId(List<Block> blocks) {
List<Block> resultBlocks = new ArrayList<>();
if (!blocks.isEmpty()) {
resultBlocks.add(blocks.get(0));
for (int i = 1; i < blocks.size(); i++) {
blocks.get(i).setPriorId(blocks.get(i - 1).getId());
resultBlocks.add(blocks.get(i));
}
}
return resultBlocks;
}
So etwa ich bin verwirrt, was passiert, wenn ich eine Einheit bestehen bleiben. Ich denke, es ist nicht in der Datenbank gespeichert, oder? Vielleicht wird es immer noch von EntityManager verwaltet, aber warum kann ich die ID bekommen? Ich danke dir sehr!
Verstehen Sie Ihre Frage nicht. Es ist einfach eine Objektinstanz, so dass Sie natürlich auf seine Felder/Methoden zugreifen können. Was ist das Problem hier? –
Was ist passiert, als Sie im Protokoll der JPA-Anbieter nachgesehen haben, um es zu verstehen? aka Debugging –