当前位置: 首页 > 知识库问答 >
问题:

Spring+CDI+JPA+Tomcat 7(JDK7)+Hibernate未在mysql上插入

宦正诚
2023-03-14

我试图将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。如果需要更多的信息,请!

共有1个答案

欧阳山
2023-03-14

我不熟悉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//继续(但是此时