草庐IT

QueryDSL-JPA

全部标签

java - JPA,如何使用同一个类(实体)来映射不同的表?

我有两个表:Ta和Tb。它们的表结构完全相同,但表名不同。我尝试创建一个实体类来映射表结构。我的一些常用应用程序模块将使用这个实体类来根据参数动态查询和更新Ta或Tb。可以在JPA中完成吗?如何编写程序在运行时将实体类动态映射到不同的表? 最佳答案 不确定是否可以完全按照自己的意愿进行操作,但可以使用继承来产生相同的结果。AbsT包含所有字段,但没有@Table注释Ta和Tb继承自AbsT并且每个都有一个@Table注释使用@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)在

java - JPA Query 仅选择特定列而不使用 Criteria Query?

是否可以使用JPA查询从对象中仅选择属性A和B而不使用条件查询?要选择所有属性,我只需执行以下操作:SELECTiFROMObjectNameiWHEREi.id=10但我在旧系统上有一个具有许多属性的对象,并且我想只选择几个属性,尽管我知道选择多个属性通常很快。如果不使用条件查询,这可能吗? 最佳答案 是的,就像在普通sql中一样,您可以指定要选择的属性类型:SELECTi.firstProperty,i.secondPropertyFROMObjectNameiWHEREi.id=10执行此查询将返回一个Object[]列表,其

java - 在 spring-data-jpa 中通过 boolean 属性查询而不使用方法参数

是否可以不使用方法参数在SpringDataJPA中通过boolean属性进行查询?基本上我希望它在不使用自定义@Query注释的情况下工作:@Query("SELECTcFROMEntitycWHEREc.enabled=true")publicIterablefindAllEnabled(); 最佳答案 JPArepositorysection查询创建有以下方法。TruefindByActiveTrue()…wherex.active=trueFalsefindByActiveFalse()…wherex.active=fals

java - JPA @SequenceGenerator 注释如何工作

我正在学习JPA,但对@SequenceGenerator感到困惑注释。据我了解,它会自动为实体的数字身份字段/属性分配一个值。Q1.这个序列生成器是利用数据库不断增加的数值生成能力还是自己生成数字?Q2.如果JPA使用数据库自​​动增量功能,那么它是否适用于没有自动增量功能的数据存储?Q3.如果JPA自己生成数值,那么JPA实现如何知道接下来要生成哪个值?它是否首先咨询数据库以查看最后存储的值以生成值(last+1)?第4季度。还请说明sequenceName和allocationSize@SequenceGenerator的属性注释。 最佳答案

java - 比较 JPA Criteria API 中的日期实体

将JPA2与EclipseLink实现结合使用。我正在尝试构建一个动态查询,它应该会为我带来一些在给定日期后保留的记录。CriteriaBuilderbuilder=em.getCriteriaBuilder();CriteriaQuerycriteria=builder.createQuery(Event.class);Rootroot=criteria.from(Event.class);criteria.select(root);criteria.distinct(true);Listpredicates=newArrayList();//...if(dateLimit!=nul

java - JPA vs ORM vs Hibernate?

我已通过各种资源了解它们。重要的是:-关于他们每个人的维基百科文章What'sthedifferencebetweenJPAandHibernate?这是我对它们的区别的理解。我不确定我对JPA与ORM的看法是否正确ORM:对象关系映射是将数据从面向对象语言转换为关系数据库的概念/过程,反之亦然例如在java中,它是在反射和jdbc的帮助下完成的。Hibernate:它是上述概念的实现。JPA:它比ORM高出一步。它的高级API和规范,以便不同的ORM工具可以实现,因此它提供开发人员可以灵活地将实现从一个ORM更改为另一个(例如,如果应用程序使用JPAapi和implementatio

java - 真正动态的 JPA CriteriaBuilder

我需要创建一个“真正的”动态JPACriteriaBuilder.我得到一个Map与陈述。它看起来像:name:Johnsurname:Smithemail:email@email.de...morepairspossible这是我实现的:CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQueryquery=cb.createQuery(User.class);RootuserRoot=query.from(User.class);query.select(userRoot);Listpredicates=newArrayList()

java - 在 JPA 中禁用缓存(eclipselink)

我想使用JPA(eclipselink)从我的数据库中获取数据。数据库由许多其他来源更改,因此我想为我执行的每个查找返回数据库。我已经阅读了许多关于禁用缓存的帖子,但这似乎不起作用。有什么想法吗?我正在尝试执行以下代码:EntityManagerFactoryentityManagerFactory=Persistence.createEntityManagerFactory("default");EntityManagerem=entityManagerFactory.createEntityManager();MyLocationone=em.createNamedQuery("M

java - JPA 何时设置 @GeneratedValue @Id

我有一个简单的JPA实体,它使用生成的long"ID"作为其主键:@EntitypublicclassPlayer{privatelongid;protectedPlayer(){//Donothing;iddefaultsto0L}@GeneratedValue@IdpubliclonggetId(){returnid;}protectedvoidsetId(finallongid){this.id=id;}//Othercode}在这种类型的对象生命周期的某个时刻,JPA必须调用setId()来记录生成的ID值。我的问题是,什么时候会发生这种情况,说明这一点的文档在哪里。我查看了J

java - 没有 id 的 JPA 实体

我有一个结构如下的数据库:CREATETABLEentity(idSERIAL,nameVARCHAR(255),PRIMARYKEY(id));CREATETABLEentity_property(entity_idSERIAL,nameVARCHAR(255),valueTEXT);当我尝试创建EntityProperty类时@Entity@Table(name="entity_property")publicclassEntityProperty{privateStringname;privateStringvalue;@Column(name="name")publicStri