草庐IT

java - 如何在运行时检索 JPA 中实体的映射表名称?

是否可以确定实体的native表名?如果存在Table注释,这很容易:entityClass.getAnnotation(Table.class).name()但是如果没有Table注解呢?Hibernate通过Configuration提供此信息。类:configuration.getClassMapping(entityClass.getSimpleName()).getTable().getName()JPA中有类似的东西吗? 最佳答案 这是我在EclipseLink中使用的方法(无映射文件):/***Returnstheta

java - 如何使用 JPA 和 Hibernate 在非主键上连接表

我有3个模型User、House、UserHouseMap。我需要通过map访问用户的房子。唯一的问题是这是一个旧数据库,我无法改变我需要使用user.name将User映射到UserHouseMap的事实,这是一个非主键。Hibernate不断给我错误,说我需要将它作为主键,或者我收到错误说发生JPA错误(无法构建EntityManagerFactory):无法找到具有逻辑名称的列:org.hibernate中的名称.mapping.Table(users)及其相关的超表和副表我已尝试将@Formula作为一种解决方法,但没有奏效。我也试过@JoinColumnOrFormula但这

java - JPA Map<String,String> 映射

如何在不使用Hibernate的类的情况下在JPA中映射Map? 最佳答案 尽管SubhenduMahanta给出的答案是正确的。但是@CollectionOfElements已被弃用。您可以使用@ElementCollection代替:@ElementCollection@JoinTable(name="ATTRIBUTE_VALUE_RANGE",joinColumns=@JoinColumn(name="ID"))@MapKeyColumn(name="RANGE_ID")@Column(name="VALUE")privat

java - JPA - FindByExample

有没有人有一个很好的例子来说明如何在JPA中通过任何实体类型的反射在通用DAO中执行findByExample?我知道我可以通过我的提供者(Hibernate)做到这一点,但我不想打破中立性......似乎标准API可能是要走的路……但我不确定如何处理它的反射部分。 最佳答案 实际上,按示例查询(QBE)已被考虑包含在JPA2.0规范中,但并未包含在内,即使主要供应商支持它。引用迈克·基思:I'msorrytosaythatwedidn'tactuallygettodoQBEinJPA2.0.CriteriaAPIdoesnotha

java - JPA 和 Hibernate 中的 N+1 问题的解决方案是什么?

我知道N+1问题是执行一个查询以获取N条记录,执行N个查询以获取一些关系记录。但是在Hibernate中如何避免呢? 最佳答案 问题当您忘记获取关联然后您需要访问它时,会发生N+1查询问题。例如,假设我们有以下JPA查询:Listcomments=entityManager.createQuery("""selectpcfromPostCommentpcwherepc.review=:review""",PostComment.class).setParameter("review",review).getResultList();

java - JPA 计数 NamedQuery

如何使用命名查询获取计数,而不获取所有列表(我认为这会提高性能)。这是不起作用的命名查询:@NamedQuery(name="Charakteristika.findAllCount",query="SELECTCOUNT(c)FROMCharakteristikac")执行这个:System.out.println("a");System.out.println(em.createNamedQuery("Charakteristika.findAllCount",Integer.class).getSingleResult().intValue());System.out.print

java - 如何使用 JPA 注释创建连接表?

我需要使用JPA注释在我的数据库中创建一个连接表,因此结果将是这样的:到目前为止,我只实现了2个实体:@Entity@Table(name="USERS",schema="ADMIN")publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID=-1244856316278032177L;@Id@Column(nullable=false)privateStringuserid;@Column(nullable=false)privateStringpassword;publicStringg

java - JPA EntityManager.getSingleResult() 为 COUNT 查询返回什么?

EntityManager.getSingleResult()对COUNT查询返回什么?那么..foo的确切运行时类型是什么?Objectfoo=em.createQuery("SELECTCOUNT(t)FROMcom.company.ThingtWHEREprop=:param").setParameter("param",value).getSingleResult(); 最佳答案 根据JPAspecification,COUNT返回一个Long:4.8.4AggregateFunctionsintheSELECTClause

java - 抽象父类(super class)的 Hibernate (JPA) 继承映射

我的数据模型代表法人实体,例如企业或个人。两者都是纳税实体,并且都有TaxID、电话号码集合和邮寄地址集合。我有一个Java模型,其中包含两个扩展抽象类的具体类。抽象类具有两个具体类共有的属性和集合。AbstractLegalEntityConcreteBusinessEntityConcretePersonEntity-------------------------------------------------------------SetphonesStringnameStringfirstSetaddressesBusinessTypetypeStringlastString

java - 简明扼要地列出 JPA2 中的新增功能?

有人知道JPA2中的新功能的好列表吗?不是支持JPA2的版本中Hibernate/TopLink的新功能,而是实际规范中的新功能。 最佳答案 接受的答案中提到的链接没有说明二级缓存,因此我决定发布一个快速列表来总结“JPA2.0(JSR-317)中的新增功能”:persistence.xml的标准属性-例如javax.persistence.jdbc.driver等,而不是持久性提供程序特定的属性。混合Access类型-PROPERTY和FIELD访问类型可以在层次结构中混合并组合在一个类中。派生标识符-标识符可以从关系中派生。@E