我目前在一个使用JPA和Kafka的项目中。我正试图找到一组组合这些操作的良好实践。在现有的代码中,生产者与jpa在同一个事务中使用,但是,从我读到的内容来看,它们似乎不共享一个事务。@PostMapping@TransactionalpublicXDtocreateX(@RequestBodyXRequestrequest){Xdtodto=xService.create(request);kafkaProducer.putToQueue(dto,Type.CREATE);returndto;}其中kafka生产者定义如下:publicclassKafkaProducer{@Auto
这似乎是一个很常见的案例,但作为JPA新手,我很难弄清楚这一点。我正在使用EclipseLink和PostgreSQL,但这应该只与JPA规范有关。我有一张tablePRIMARY它有一个ID,然后是一堆其他列。还有一张tableSECONDARY在PRIMARY中有一个外键表也称为ID.这SECONDARY表有一个复合键ID和代表语言环境的varchar。所以,在Primary实体我想要一个类型为Map的字段其中键是来自SECONDARY的语言环境字符串表和条目是Secondary实体。我的Secondary类看起来像这样:@EntitypublicclassSecondary{
我正在研究使用Java、.NET和Groovy开发企业应用程序。对于每个平台,我们将尝试实现一个简单的SOAPWeb服务有多难。我们将使用最常用的工具和库,尽可能准确地研究现实世界。在这方面,当使用Hibernate进行持久化时,是使用新的JPA(JavaPersistenceAPI)还是使用JPA出现之前存在的Hibernate自定义API更好地反射(reflect)现实世界? 最佳答案 您可能已经知道,从3.2开始,Hibernate已通过JPA认证。您可以轻松地将Hibernate用作JPA提供程序,而无需使用任何Hibern
这似乎是一个非常简单的问题,但我还没有设法找到明确的答案。我有一个DAO类,它自然地通过使用标准查询来查询数据库。所以我想知道使用相同的CriteriaBuilder实现来创建不同的查询是否安全,或者我是否必须为每个查询创建新的CriteriaBuilder实例。以下代码示例应该说明我想做什么:publicclassDAO(){CriteriaBuildercb=null;publicDAO(){cb=getEntityManager().getCriteriaBuilder();}publicListgetNames(){CriteriaQuerynameSearch=cb.crea
我想利用JPA@Entity注释而不是将类实体声明为J2SEpersistence.xml文件。我想避免的事情:org.hibernate.ejb.HibernatePersistencecom.mycompany.entities.Class1com.mycompany.entities.Class2com.mycompany.entities.Class3这就是我实际的persistence.xml看起来很像org.hibernate.ejb.HibernatePersistence是否有一种标准方法可以从JAR模块中扫描persistence.xml文件中的JPA实体?是否有一种
考虑以下层次结构,其中实体WidgetA和WidgetB扩展抽象Widget父类(superclass):@Entity@Inheritance(strategy=InheritanceType.JOINED)publicabstractclassWidgetimplementsSerializable{@Column(name="serialNumber",length=64,nullable=false,unique=true)privateStringserialNumber;...和@EntitypublicclassWidgetAextendsWidgetimplements
对于在hibernate中使用的@formula,是否有任何替代解决方案?我需要通过jpa使用它,例如:@Formula("selectcount(1)fromMarketmwherem.defaultAirportCode=airportCode")privateBooleanisDefault; 最佳答案 您可以使用注释和一种方法的组合@TransientprivateBooleanisDefault;@PostLoadprivatevoidsetDefault(){this.isDefault=this.defaultAirp
我在我的存储库中使用SpringJPA命名查询。我的问题是,我无法在任何地方找到任何信息,对于不匹配任何结果的查询将返回什么值。我假设findOne()为空,但我不知道findAllByName()函数会是什么。有没有人从他/她的经验中知道或知道文档中的位置? 最佳答案 根据我的个人经验,如果您在存储库中搜索对象,例如通过Id或Name,命名查询方法将返回类型为T的对象。,但如果未从您的存储库中找到任何结果,它将返回null。可以返回多个元素的方法将产生一个空集合List(不为空)。这里有一些文档:http://docs.sprin
有没有通用的方法可以if(entityispersistedbefore){entity=entity.merge();}else{entity.persist();}所以包含上述逻辑的方法在任何地方都是安全的? 最佳答案 如果您需要知道对象是否已经在持久性上下文中,您应该使用EntityManager的contains方法。只有EntityManager可以告诉您实体是否持久化,实体没有此类信息。在这里你可以检查containsmethod的javadoc.if(!em.contains(entity)){em.persist(e
使用JPA查询语言,如何确定实体(表)中的大小(行数)? 最佳答案 使用计数聚合函数:EntityManagerem=...Queryq=em.createQuery("SELECTcount(x)FROMMagazinex");Numberresult=(Number)q.getSingleResult(); 关于java-使用JPA查询语言的表大小,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/