草庐IT

computer-database-jpa

全部标签

java - JPA 查询返回空值 - 具有空列的复合键

我有一个旧数据库(实际上是Cobol文件),我正在使用带有Hibernate/JPA的专有JDBC驱动程序访问它。实体有一个包含2列的复合主键:CODE和SITE.在遗留数据中有相同的记录CODE可以具有SITE的特定值,或者在SITE中可能有一条为NULL的记录代表“所有站点”的列。这个文件的理论是,如果你找不到CODE为您的特定SITE然后你在SITE中查找带有NULL的记录(“包罗万象”)。我不能改变这个“表”的结构,因为它会涉及重写我们不想做的大部分遗留Cobol系统。我也无法创建数据View。现在当我做em.find主复合键类包含特定的codesite为空,然后Hiberna

java - 在 JPA 中链接不同实体类型的最佳方法

简短版本用于仓促:我的域模型中有多个表/实体具有相同的字段(UUID)。有一个表,我需要将此类实体的行/实例链接到其他JPA管理的实体。换句话说,该链接表中字段的实例不会预先知道。我能想到的两种方法是:使用抽象实体和TABLE_PER_CLASS策略,或者使用@MappedSuperClass也将实例的类名存储在链接表中,或类似的东西让我定义从正确的表中获取实际实例的逻辑。两者在复杂性和性能方面各有优缺点。您认为哪个最好,是否有第三种选择,或者您过去是否尝试过类似的方法并且建议/强烈警告不要这样做?长版如果你想要更多背景:我有一个数据库/对象模型,其中许多类型都有一个公共(public

java - JPA 2.1 : Introducing Java 8 Date/Time API

我想在启用JPA的应用程序中添加对Java8日期/时间API(JSR-310)的支持。很明显JPA2.1doesnotsupporttheJava8Date/TimeAPI.作为解决方法,最常见的建议是使用AttributeConverter.在我现有的应用程序中,我将我的实体更改为对列映射字段使用LocalDate/LocalDateTime类型,并为java.util添加了旧版setter/getter.Date给他们。我创建了相应的AttributeConverter类。当使用Query.setParameter()和java.util.Date实例时,我的应用程序现在失败了(它

java - 具有继承性的实体的 JPA native 查询

我有一个实体类和一个基于该实体的子类:@Entity@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)publicclassA和@EntitypublicclassBextendsA我需要发出一个native查询,该查询仅在基类(A)上使用存储过程。如果我尝试如下:entityManager.createNativeQuery("select*fromAawhereprocedure(f)",A.class).getResultList()我收到关于“在结果集中找不到列clazz_”的错误。我假设JPA提供者添加此列是为了区分基

java - JPA。如何子类化现有实体并保留其 ID?

假设我有两个经典的非抽象JPA类:Person和Student。@Entity@Inheritance(strategy=InheritanceType.JOINED)publicclassPerson{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateStringid;//...}@EntitypublicclassStudentextendsPerson{//...}现在有一些身份的人进入大学并成为一名学生。我如何在JPA中处理该事实并保留人员的ID?student=newStudent();student.setPers

java - JPA @ManyToMany - 无法删除或更新父行 : a foreign key constraint fails

我有实体:@EntitypublicclassUser{@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)privateListroles=newArrayList();@EntitypublicclassRole{@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)privateSetpermissions=newHashSet();执行删除/移除时抛出以下异常:Causedby:com.mysql.jdbc.exceptions.MySQ

java - 为什么 Hibernate 内联传递给 JPA Criteria Query 的 Integer 参数列表?

我正在使用JPACriteriaAPI构建查询。当我使用javax.persistence.criteria.Path#in(Collection)创建两个限制谓词时方法生成的SQL查询与我预期的略有不同。在int上构建的第一个谓词属性生成的SQL内联参数集合的所有元素:in(10,20,30).在String上构建的第二个谓词属性生成的参数化SQL:in(?,?,?).让我展示一下:实体:@EntitypublicclassA{@IdprivateIntegerid;privateintintAttr;privateStringstringAttr;//getter/setters}

java - Jersey API + JPA/Hibernate Criteria 延迟加载不起作用

这是我拥有的一个简化的POJO:@Entity@Table(name="Patient")@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name="Discriminator",discriminatorType=DiscriminatorType.STRING)@DiscriminatorValue(value="P")@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)publicclassPatientimplementsSerializ

java - 如何在 Netbeans 中使用 Eclipse-Link JPA 应用静态编织 Ant 任务?

我正在使用Netbeans7.1.1和Glassfish3.1.2服务器。作为JPA提供者,我决定使用Netbeans附带的eclipse-link2.3.0。因为我想使用惰性抓取并且我的项目包含大约45个JPA实体类,它们之间确实有很多关系,所以我决定使用静态编织。此外,@Entity类位于单独的类库项目中,而persistence.xml位于EJB项目中。我已经按照此处的说明进行操作:http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Stati

java - 动态设置 JPA 持久性属性

假设我有以下persistence.xml,连接url、用户和密码都是硬编码的。以下是针对Hibernate3.2的。对于Hibernate3.5++,我们必须将“hibernate.connection”更改为“javax.persistence”。但是让我问这个问题,不管文字是“hibernate.connection”还是“javax.persistence”。org.hibernate.ejb.HibernatePersistencefalse但是,我们需要动态设置url、用户和密码。有一个建议的身份验证服务器,它提供url、用户和密码。这样我们就不需要单独配置无数使用某种形式