私は個人的なプロジェクトに取り組んでいますが、何時間もの調査とデバッグを行っても解決できないような奇妙な問題があるので、明らかにそれは非常に単純なことであるに違いありません。とにかく、コンテキストは、JPA + PostgresSQL+Glassfishです。私はエンティティ(netbeansによって生成された)MvUserを持っています:
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
@SequenceGenerator(name="mv_user_autoincrement_gen",sequenceName ="mv_user_autoincrement",allocationSize=1)
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="mv_user_autoincrement_gen")
private Long id;
次に、すべてのボイラープレート永続化コードのジェネリックを含むAbstractFacadeがあります。
ここに私はあまり何もしない方法があります、ただ:
@Override
public void create(T entity) {
getEntityManager().persist(entity);
}
ここで、サービスクラスでこれを呼び出したとしましょう。最初にファサードを注入します。
@EJB
IMvUserFacade userFacade;
それから私はそれを使用します:
@Override
public void saveUser(MvUser user)
{
userFacade.create(user);
// more business specific code follows
}
このようなサービスに電話をかけます
MvUser = new MvUser();
... setters etc
mvUserService.saveUser(user);
さて、何が起こっているのかというと、createメソッドでオブジェクトが永続化され、生成されたIDとすべてがあります。チェーン全体でオブジェクトパラメータを持っているので、saveUserレベルで同じオブジェクトが見つかると思いますが、いいえ、切り離されたエンティティが残っています。私が間違っているのは何ですか?ありがとう。