Beanを使用したSeam3/ JBoss/Hibernateプロジェクトがあり@ConversationScoped
ます。このBeanは、の作成/編集を管理し@Entity
ます。エンティティに加えられた変更を保存し、ユーザーを現在のページに維持できるようにしたいと思います。
@Named
@Stateful
@ConversationScoped
public class TeamManagementBean implements Serializable {
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
@Inject
Conversation conversation;
@Inject
FlushModeManager flushModeManager;
protected Team team;
@Inject
@CurrentUser
private User currentAccount;
@Begin
public void loadTeam(Team team) {
if(conversation.isTransient()) conversation.begin();
flushModeManager.setFlushModeType(FlushModeType.MANUAL);
this.team = team;
}
public void save() {
if(team.isUnsaved()) entityManager.persist(team);
entityManager.flush();
}
がsave()
呼び出されると、会話内のエンティティが更新されます(つまり、変更は会話とWebページに表示されます。ただし、会話を終了しても、データはデータベースに書き込まれません。
サイトの別の部分では、メソッドが呼び出されfaces-config.xml
たときに別のページにリダイレクトすることで、データベース内のエンティティを更新することができました。save()
ただし、このエンティティを保存するときに、ユーザーを同じページに保持したいと思います。