草庐IT

java - 通过导致 PSQLException 的 Hibernate 和 PostgreSQL 执行查询的差异

我想在Postgres9.4数据库系统上通过JPA2.0和版本4.2.21中的Hibernate执行nativeSQL查询。基本上根据我最新的post在stackoverflow上,我尝试将大量对象/记录放入“时间”桶中。设置可以简化为以下设置,其中包含一个带有id字段和给定时间戳的表“MyObject”:CREATETABLEmyobject(idbigintNOTNULL,lastseentimestampwithouttimezone,)我的一段代码,应该执行查询是这个:Queryq=getEntityManager().createNativeQuery("selectcoun

java - Spring Data REST + JPA 从 OneToMany 集合中删除 [不是所有者端]

目前我们有一个问题(一个众所周知的问题)SpringDataJPA+SpringDataREST(HibernateasJPA实现)在尝试更新不是拥有方的集合(关系)时。映射如下:@Entity(name=Product.NAME)publicclassProduct{...@OneToMany(mappedBy="baseProduct",fetch=FetchType.LAZY,targetEntity=Variant.class)ListgetVariants(){...在另一个变体方面:@Entity(name=Variant.NAME)publicclassVariantex

java - 具有使用相同存储库和模型类的多个数据源的 Spring Boot?

我必须做一个SpringBoot1.5版应用程序,它可以这样做:它创建一个对象并尝试持久保存到两个数据源(例如:2个数据库,名为:Postgresql中的test_book_1和test_book_2)。我找到了一个适用于2个不同对象(作者:A,书籍:B)的示例,它们可以存储在不同的数据库中(A转到test_book_1,B转到test_book_2)。这是一个很好的例子,但这不是我想要的。Storeseparateobjectstodifferentdatasources我想到我需要定义2个自定义JPADatabaseConfigurations并需要配置它们以管理相同的存储库和域类

java - Hibernate @Formula 不包含 Schema

我有一个具有属性@Formula的实体,如下所示:@Entity@Table(name="areasAuxiliar")publicfinalclassAreaAuxiliarimplementsSerializable{@Id@Column(name="idArea")privateIntegeridArea;@Formula("RUTAAREA(idArea)")privateStringruta;当我将我的hibernate配置为指向Oracle数据库时,我没有遇到任何问题,但是,当我切换到SQLServer时,hibernate不包括shema并且查询失败,为hibernate

java - 为什么 hibernate 执行两个查询以预加载 @OneToOne 双向关联?

我有实体A有一个B实体,B有一个A与@OneToOne双向关联。现在,当我找到所有A记录时,hibernate在B上执行两个带有左外连接的查询,如下所示:selecta.id,a.id_b,a.field1,b.id,b.field1fromAasa,BasbleftouterjoinbONb.id=a.id_b;selecta.id,a.id_b,a.field1,b.id,b.field1fromAasa,BasbleftouterjoinbONb.id=a.id_bWHEREb.id=?第一次查询加载A和B字段是可以的,但是为什么要执行第二次查询重新加载A?我认为这个查询加载了B

java - 如何用jpa映射抽象集合?

我正在尝试找出是否有可能让JPA持久化具有具体实现的抽象集合。到目前为止,我的代码如下所示:@EntitypublicclassReportextendsModel{@OneToMany(mappedBy="report",fetch=FetchType.EAGER)publicSetitems;}@MappedSuperclasspublicabstractclassOpsItemextendsModel{@ManyToOnepublicRetailOpsBranchreport;}@Entity@Inheritance(strategy=InheritanceType.TABLE_

java - JPA REQUIRES_NEW 事务到底什么时候提交

在spring容器中,代码如下:publicclassA{@Transactionalpublicvoidm1(){...b.m2();//callinanewtransaction...}}publicclassB{@Transactional(propagation=Propagation.REQUIRES_NEW)publicvoidm2(){...}}为m2()创建的事务究竟何时被提交?一旦m2()调用结束,或者一旦m1()调用结束?Whendoes@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)commi

java - hibernate 覆盖 "lazy=false"

我正在现有项目中开发一个新模块。该项目已经有一个用户表,一个pojo和一个对应的映射文件。问题是他们通过提及lazy="false"急切地获取所有属性。但是,在我的模块中,我在一个请求中进行了大量的读写操作,所以我不想急切地获取。我想知道的是,是否可以为同一个表和同一个pojo创建另一个映射文件来延迟加载所有属性?我已尝试为映射文件分配不同的实体名称,但在部署时,我收到错误消息“实体映射中的重复列”。我看到了this回答,但它说“不映射child”,那么我将如何获得代理? 最佳答案 这是使用EAGER抓取作为默认策略的一大缺点。通常

java - JPA 中 flush 的确切目的是什么

一些令人困惑的解释:冲洗();刷新是将底层持久存储与内存中保存的持久状态同步的过程。它会更新或插入正在运行的事务中的表,但它可能不会提交这些更改。如果更改无论如何都只会在提交后持久保存在数据库中,那么为什么要在代码中间进行刷新。并且在运行刷新之后,如果对托管对象进行了任何更改,那么将抛出异常,或者这些将被同步,然后将被保留。如果他们得到同步,那么为什么首先要刷新。 最佳答案 理论上,您(作为JPA的用户)永远不应该(或在极少数情况下)调用flush()。Flushingistheprocessofsynchronizingtheun

java - 在 Spring Data JPA 中使用注释连接两个以上的表

我有三个实体:A、B和C,它们之间的关系如下:classA{@ManyToManyListbs;//otherattributesandgettersetters}classB{@ManyToManyListcs;//otherattributesandgettersetters}classC{//otherattributesandgettersetters}但是从我当前的实体类中,我可以使用@JoinTable在任意2个表之间建立关系。但我想要的是将所有3个实体之间的关系保存在一个单独的表中,将这些实体的主键作为列。(外键)如果我们假设实体B和C已经保存(插入)到数据库中,我将插入