草庐IT

QueryDSL-JPA

全部标签

java - 是否应该在 equals 和 hashCode 中考虑 JPA 实体的 id 字段?

我在使用JPA2和EclipseLink为数据库应用程序编写测试时遇到问题:我将一些实体添加到数据库中,稍后检索它,并想将它与具有我期望的值的实例进行比较,以确认添加是否按我预期的方式工作。首先我写了类似的东西assertEquals(expResult,dbResult);失败了,因为我真的不知道id的值字段,由数据库生成,因此dbResult不同于expResult我用new创建的并手动填充。我看到两个选项:或者我删除id来自equals的字段和hashCode因此比较仅基于“实际值”。不过,我不知道这是否会导致数据库或其他地方出现问题。或者我编写测试以明确检查除id之外的每个字段

java - JPA 查询 MONTH/YEAR 函数

如何像sql查询一样使用MONTH函数编写JPA查询?@NamedQuery(name="querybymonth",query="selecttfromtable1twhereMONTH(c_Date)=5")当我使用上述模式进行查询时,出现错误:unexpectedtoken-MONTH。 最佳答案 如果您使用的是EclipseLink(2.1),则可以使用FUNC()函数调用JPAJPQL规范中未定义的任何数据库函数。即FUNC('MONTH',c_Date)在JPA2.1(EclipseLink2.5)中FUNCTION语法

java - 使用 jackson 将双向 JPA 实体序列化为 JSON

我正在使用Jackson将我的JPA模型序列化为JSON。我有以下类(class):importcom.fasterxml.jackson.annotation.*;importjavax.persistence.*;importjava.util.Set;@JsonInclude(JsonInclude.Include.NON_NULL)@JsonIgnoreProperties(ignoreUnknown=true)@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class)@Entitypublic

java - JPA复合键+序列

是否可以在普通JPA或JPA+Hibernate扩展中声明复合键,其中复合键的元素是一个序列?这是我的复合类:@EmbeddablepublicclassIntegrationEJBPkimplementsSerializable{//...@ManyToOne(cascade={},fetch=FetchType.EAGER)@JoinColumn(name="APPLICATION")publicApplicationEJBgetApplication(){returnapplication;}@Column(name="ENTITY",unique=false,nullable=

java - 具有接口(interface)属性的 JPA 实体,这可能吗?

我有以下实体:@EntitypublicclassTestCaseStepimplementsJPAEntity{...@Column(name="STEP_NUMBER")privateIntegerstepNumber;@Enumerated(EnumType.STRING)@Column(name="ACTION")privateActionaction;**@ManyToOne@JoinColumn(name="connector")privateScriptItemconnector;**我的属性ScriptItem是其他3个类的接口(interface)。是否可以配置JPA

java - JPA 中绝对需要列注释吗?

我还有一个关于JPA的问题。如果我想将它存储在我的数据库中,是否有必要用@Column注释每个成员变量?或者是否可以通过一些成员变量(在这些示例中为字段“时间戳”)将其省略,并且该字段将在每种可能的情况下存储在数据库中:@Entity@Table(name="usercontent")publicclassUserContentEntityimplementsPersistable{/**serialVersionUID*/privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationTy

java - 如何持久化大量实体 (JPA)

我需要处理一个CSV文件并为每条记录(行)保留一个实体。现在,我这样做:while((line=reader.readNext())!=null){Entityentity=createEntityObject(line);entityManager.save(entity);i++;}save(Entity)方法基本上只是一个EntityManager.merge()调用。CSV文件中大约有20,000个实体(行)。这是一种有效的方法吗?它似乎很慢。使用EntityManager.persist()会更好吗?此解决方案是否存在任何缺陷?编辑这是一个漫长的过程(超过400秒),我尝试了

java - 在 PostgreSQL 和 JPA/Hibernate 中使用 Point 类型

有没有办法将Point列映射到Java实体字段?我尝试了HibernateSpatial4.0,但它似乎无法与没有PostGIS的纯PostgreSQL一起使用。这是点域定义:importcom.vividsolutions.jts.geom.Point;...@Column(columnDefinition="point")@Type(type="org.hibernate.spatial.GeometryType")privatePointlocation;persistence.xml中的方言:当我尝试保留这个实体时,抛出异常:org.postgresql.util.PSQLEx

java - 简单可靠的内存数据库,用于快速 Java 集成测试,支持 JPA

如果我使用内存数据库而不是PostgreSQL,我的集成测试会运行得更快。我使用JPA(Hibernate),我需要一个内存数据库,它可以轻松切换到使用JPA、易于设置且可靠。它需要相当广泛地支持JPA和Hibernate(或者反之亦然),因为我不想采用我的数据访问代码进行测试。根据上述要求,哪种数据库是最佳选择? 最佳答案 对于集成测试,我现在使用H2(来自HSQLDB的原作者)我更喜欢HSQLDB。是faster(我希望我的测试尽可能快),它有一些不错的功能,比如compatibility模式下,开发团队react非常迅速(而H

java - 如何使用 JPA Criteria API 加入不相关的实体

两个数据库表有外键关系。它们被JPA映射到两个实体A和B,但是连接列是从实体中手动删除的,所以在JPA世界类A和B不相关,您无法通过字段/属性从一个导航到另一个。使用JPACriteriaAPI,是否可以创建连接两个表的查询?我在Internet上找到的所有示例都使用连接列来实现目标,但是,如上所述,它已从代码中删除,因为大多数时候我对A之间的关系不感兴趣和B,我担心可能的开销。 最佳答案 第一:外键关系不仅仅是为了导航。它们主要用于确保不会在关系中引入虚假值。它们还可以帮助数据库进行查询优化。我建议您重新考虑一下。无论如何,要创建