我试图将CDI与Spring和JPA(hibernate)一起使用,但我遇到了一些问题。
Imovel(实体)
@Entity
@Table(name="Imovel")
public class Imovel implements Serializable, BaseEntity{}
伊莫韦尔比恩
@Named
@ViewScoped
public class ImovelBean implements Serializable {
@Inject
private ImovelDao imovelDao;
}
伊莫维尔道
public class ImovelDao implements Serializable {
private static final long serialVersionUID = 1L;
private EntityManager manager;
@Inject
public ImovelDao(EntityManager manager) {
this.manager = manager;
}
public Session getSession() {
return (Session) manager.unwrap(Session.class);
}
public void insert(Imovel imovel) {
getSession().save(imovel);
}
}
当我尝试插入:
Hibernate日志记录:
在Imovel(bairro、cep、cidade、Compemento、endereco、estado、numero、observacao、quarto、tipoImovel、tipoSituacao、tipoVenda、valor)中插入值(?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?、?)
但是我的实体没有保存在数据库中。
它使用列表工作:
Criteria cri = getSession().createCriteria(Imovel.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(Restrictions.eq("tipoSituacao", TipoSituacao.Ativo));
我使用persistence.xml、web.xml、beans.xml、context.xml和applicationcontext.xml。如果需要更多的信息,请!
我不熟悉Spring和Tomcat,但我不认为这是一个问题。我将试着描述我所使用的设计解决方案。
我总是让我的DAO@named
,并在我想要向服务层注入一些DAO时使用@inject
。另外,当我要将EntityManager
注入到DAO时,我使用@persistenceContext
注释。然后,在DAO中,当我想插入到表中时,我只执行EntityManager.persist(entity)
,或者当我想select*FROM...
时,我只执行EntityManager.find(yourentity.class)
。(我也使用GenericDAO
模式,但这不是必需的)
我不知道Spring是如何处理事务的,但我怀疑您的服务方法中有类似@transactional
注释的地方,不要忘记这一点。
更新:可以显示persistence.xml
吗?
我有一个问题插入不工作。读取(选择)工作正常。但是,在我的@Transactional方法的末尾没有执行insert。即使我确实看到在实体管理器上调用了事务commit/close。我已经尝试了不同的配置,但我仍然无法获得记录(插入)在事务结束时工作。而且我没有看到任何错误产生。我启用了hibernate.transaction调试,但没有看到任何Hibernate事务消息。 我正在使用Tomca
我无法看到我错过配置了什么。 你能告诉我,我可以做什么来解决这个问题,并使实体持久化到数据存储吗?
我正在做一个在集群环境中运行的项目,那里有许多节点和一个数据库。该项目使用Spring-data-JPA(1.9.0)和Hibernate(5.0.1)。我有问题解决如何防止重复行问题。 举个例子,这里有一个简单的表 重要的部分是有一个约束。 当然,匹配示例存储库: 本例的思想是,系统的某些部分可以插入行,以便为周期性运行的内容进行调度,在所述运行之间可以进行任意次数的调度。当某个东西实际运行时,
1)我有2张桌子,用户和user_profile一对一关系, 用户表: id,用户名,名字,姓氏-ID有主键, 用户配置文件: id,name,user_id-ID具有主键,user _ ID具有用户表的外键 2) 以下是两个JPA实体对象 用户: 用户配置文件: 当我试图插入到两个表中时,我看到列被添加到带有值的USER表中,而我在USER_PROFILE表的列中看不到任何值。 我是这个MySQ
专家/大师/朋友 我们正在使用Spring 3.2、JPA 2、Hibernate 4.2组合,并面临这个奇怪的空指针问题,同时试图将任何Spring注释的bean注入到EmtyInterceptor中,实现如下所示。我们试着给这个豆子和Spring的豆子注释,但是没有成功。 非常感谢您对解决这个难题的任何帮助。 在应用程序的其他地方,注入就像一个魅力,没有任何问题。这是我们的应用程序上下文。xm
好的,对于前面提到的技术,这是一个非常奇怪的行为,我有一个控制器,它调用一个服务,这调用一个dao。传递给持久化的实体有一个带有注释的字段,当我为dao或服务运行测试并插入重复值时,会抛出异常这是正常的,是预期的行为。但是,当我运行web应用程序时,异常会在服务完成执行后抛出。在执行dao时不会。因此,这迫使我在控制器中捕获异常,而不是在服务中。 控制器启动 服务//继续 DAO//继续(但是此时