我正在做一个个人项目,我有一个奇怪的问题,即使经过数小时的研究和调试,我似乎也无法解决,所以很明显它一定很简单,我忽略了......无论如何,上下文是: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);
现在,发生的事情是在创建方法中对象被持久化,我拥有生成的 id 和所有内容。因为在整个链上我有对象参数,我假设在 saveUser 级别会找到相同的对象,但不,我留下了一个分离的实体。我做错了什么?谢谢。