Tag: jpa

重用多个存储库标准的最佳方法是什么?

我有一个存储库层,它有许多方法组合,以匹配搜索标准。重用此标准的最佳方法是什么? 我认为像findByNameAndIdAndBirthdayAndAccounaNumber这样的方法名称并不是一个好主意! 谢谢 ! public Order findByIdAndName(String orderId) { List list = entityManager.createNamedQuery(OrderEntity.QUERY_FIND_BY_ORDERID_AND_NAME, OrderEntity.class) .setParameter(“orderId”, orderId) .setParameter(“name”, name).getResultList(); if (list.isEmpty()) { return null; } OrderEntity orderEntity = list.get(0); return toOrder(orderEntity); }

Crudrepository /从其他表到实体的单个字段作为只读

因为我犯的任何错误,请耐心等待,因为这是我的第一个问题。 我有一个包含两个表的数据库,一个名为PERSON的表 使用以下实体: @Entity class Person { @Id private String guid; private String firstName; private String organisationGuid; … … } 一个表叫做: 组织 使用以下实体: @Entity class Organisation { @Id private String guid; private String name; … … } 如您所见,每个人都属于一个组织。 现在我需要列出我所有的人,以及组织的名称。 我不希望Person-entity上有完整的Organization-entity,而只是名称。 像这样: [{ “guid”: “xxx”, “firstName”: “Name”, “organisationGuid”: “yyy”, “organisationName”: “Name of yyy” }] 我怎样才能以最简单的方式实现这一目标? 我已经尝试过的事情: […]

为什么在JpaTransactionManager中使用jpadialect

我正在从Spring in Action学习spring 3.0。 在那里,它讨论了在JpaTranactionManager中使用jpadialect的重要性 然而,方言已经通过jpaVendorAdaptor在entityManagerFactory的声明中出现。 在JpaTranactionManager中使用方言是多余的吗?

是否有无状态版本的JPA EntityManager?

Hibernate有一个无状态版本的会话 :JPA EntityManager是否存在类似的东西? 即不使用第一级缓存的EntityManager?

Spring Boot 1.2.5 Hibernate JPA嵌套了很多对很多关系

我有3个表如下 产品{id,title} Product_image {product_id,image_type_id,path,alt_text} Product_image_type {id,type_name} 我想要的结果对象是这样的: Product{ id, title, image_types[ { type_id, type_name, image [ { alt_text, path }, { alt_text, path } ] }, { type_id, type_name, image [ { alt_text, path } ] } ] } 我做了以下 产品类别: @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinTable( name = “product_image”, joinColumns = { @JoinColumn(name […]

JPA 2.1 ConstructorResult导致ClassCastException

我的结果集中的对象被强制转换为’Object’而不是我在@SQLResultSetMapping对象中指定的对象。 我正在尝试获取ConstructorResult的句柄,并创建了一个包含简单连接的查询,并尝试获取结果集并循环,但它将其打印出来以确保我正确。 然而,当我进入循环时,看起来应该是直截了当的不是。 当我声明结果列表时,它被转换为类型。 我逐步执行查询测试类,它成功运行查询并将其加载到结果中,但结果列表中的项目已键入“Object”而不是CommentInfoListItemDTO对象。 因此,当我进入循环时,它会遇到类强制转换exception。 为什么不将结果强制转换为CommentInfoListItemDTO对象? 特别是在@SQLResultSetMapping中具体说明。 代码发布在下面…我截断了一些列名称只是为了缩短它们。 如果它有助于将其添加回来让我知道。 public List getCommentTitleListByPersonId(BigInteger personId) { String queryString = “select c.article_id, ” ***[columns removed for brevity]*** + “c.person_id as comment_person_id, ” + “a.party_id as aticle_party_id ” + “from article_comment c ” + “join article a ” + “on a.article_id = c.article_id ” + “where c.person_id = […]

H2不在我的Spring Boot应用程序中创建/更新表。 我的实体出了什么问题?

我想通过使用Hibernate创建一个CRUD存储库来在H2数据库中保留一些数据。 我无法让数据库存储我的条目。 目前,我正在尝试通过制作样本条目来更新数据库期间实现这一点。 条目在日志中看起来很好,但不创建/更新/生成表。 为什么Hibernate在这种情况下无法创建表? (如果问题出在我的数据结构中) 这是我的实体, Game.java类(我试过没有@Column注释,没有区别.Id不是自动生成的,我需要每次都能输入自己的ID): @Entity @Table(name = “GAME”) public class Game { @Id @Column (name = “ID”) private long id; @Column (name = “NAME”) private String name; @Column(name = “STORYLINE”, length = 4000) private String storyline; @Column(name = “AGGREGATED_RATING”) @JsonProperty(“aggregated_rating”) private double aggregatedRating; @Column(name = “FIRST_RELEASE_DATE”) @JsonProperty(“first_release_date”) private long firstReleaseDate; @Embedded […]

无法提交JPA事务 – RollbackException:事务标记为rollbackOnly

首先,我想说我已经在我的案例中看到了stackoverflow的所有主题,但无论如何都无法解决我的问题。 我需要每晚运行预定的任务来检查任务完成的天气 – 我这样做: @Service @Transactional public class CronBackGroundProcess { @Autowired private CronJobService cronJobService; @Scheduled(cron = “15 01 01 ? * *”) public void StartNightJob() { CronJobLog log = new CronJobLog(); int count = 0; try { log.setStartTime(new Date()); log.setStatus(“Entered StartNightJob Function”); cronJobService.saveCronJobLog(log); List Tasks = cronJobService.getActive_AND_InArreasTasks(); log.setStatus(“Grabbed List of tasks to Check”); cronJobService.saveCronJobLog(log); for […]

删除OneToMany关系中的实体

我无法理解从OneToMany关系中删除实体所需的最小努力。 我发现很多例子只是将实体添加到这些集合中(并且可以正常工作),但是删除实体要难得多。 我有以下课程: @Entity public class Product { … OneToMany(mappedBy=”product”, orphanRemoval=true, cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER) Set experts = new HashSet(); … } @Entity public class Expert { … @ManyToOne(optional=false) Product product; @ManyToOne(optional=false) Person person; … } (人与产品相似) 我充满了产品和专家。 我想从产品列表中删除专家,以便完全删除专家实体。 我希望以下代码就足够了: Product aProduct = findAProduct(…); Expert anExpert aProduct.getExperts.get(…); // Just get the first expert that I want removed EntityManager […]

无需交易即可获取数据

下面是带有spring事务的示例代码片段。 我的问题: – 是否会使用相同的会话来获取第1行和第2行的实体? 我的理解: – 我相信是的,春季交易将确保这一点 @Transactional() public void method1( //fetch entity1 from dao with the help of entity manager//line 1 // fetch entity2 from dao with the help of entity manager//line 2 // now I fetch thru method entity.fetchLazyField()// line 3 ) 现在,如果我删除@Transactional() 。 我相信一旦获取entity1就会关闭会话,并且将为line2使用单独的会话。 对 ? 在第3行(一旦@Transactional被删除),我是否能够获取数据或会话被关闭应该抛出exception? 我没有粘贴大的xml配置和完整的dao代码,只是用实体管理器获取etity。 事务传播属性是Required