- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试将 native 查询映射到非实体类。我有以下实体:
@Entity
@Table(name = "Groups")
@SqlResultSetMapping(name = "groupList", classes = {
@ConstructorResult(targetClass = GroupListEntry.class, columns = {
@ColumnResult(name = "id", type = Long.class),
@ColumnResult(name = "name", type = String.class),
@ColumnResult(name = "typeId", type = Long.class),
@ColumnResult(name = "lastUpdateDate", type = Date.class)
})
})
public class GroupEntity implements Serializable {
...
}
我预料到会打电话
final Query query = getEntityManager().createNativeQuery(q.toString(), "groupList");
final List<GroupListEntry> result = Collections.checkedList(query.getResultList(), GroupListEntry.class);
将导致使用以下构造函数创建 GroupListEntry
对象(如 @ColumnResult
注释中所述)
public GroupListEntry(
final Long groupId,
final String name,
final Long typeId,
final Date lastUpdateDate) {
...
}
但事实证明,预期的构造函数依赖于底层数据库......在集成测试中,我使用 HSQLDB 和 JPA/Hibernate 尝试调用:
public GroupListEntry(
final BigInteger groupId,
final String name,
final BigInteger typeId,
final Date lastUpdateDate) {
...
}
而在使用 MSSQL 的开发环境中,它调用:
public GroupListEntry(
final Integer groupId,
final String name,
final Integer typeId,
final Date lastUpdateDate) {
...
}
显然,每个@ColumnResult
中指定的类型都会被忽略。我只想有一个构造函数而不是三个。
下面是我的 pom.xml
文件的片段:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
我错过了什么吗?
在执行查询后编写一些注释比手动映射要优雅得多,但我不能强制它正常工作。
问候,
中号
最佳答案
答案是您的期望是正确的,即以下内容适用于 Hibernate 4.3.5:
Apparently the specified type in each @ColumnResult is simply ignored.
有一个官方的 Hibernate 错误:HHH-8237 - Type mapping of @ColumnResult is ignored 。正如您所看到的,这个错误在 Hibernate 版本 4.3.6 中已修复。
关于java - JPA 2.1 中的 @ConstructorResult 映射无法与 Hibernate 4.3.5.Final 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761770/
在使用 @SqlResultSetMapping 的 @ConstructorResult 时,我不知道如何在 @ColumnResult 类型中使用 Enum @SqlResultSetMappin
我正在尝试使用 jpa 的 entityManager 的 createNativeQuery 方法映射非实体 pojo。通过使用这样的东西 @SqlResultSetMapping(name="Re
我正在尝试使用SqlResultSetMapping将NativeQuery的结果映射到非实体pojo。和 ConstructorResult 我正在使用这个 StreetCity 类,并带有结果映射
我正在尝试将 JPA native 查询的返回结果映射到未映射的 Java POJO 类并使用 @ConstructorResult 如下: @SqlResultSetMapping(name = "
我想从表中选择特定列并将结果存储到非实体 POJO。 我的实体类: @Entity @Table(name = "CUSTOMER") @NamedNativeQuery(name = "findSa
我尝试将 native 查询映射到非实体类。我有以下实体: @Entity @Table(name = "Groups") @SqlResultSetMapping(name = "groupList
我想知道使用 @SqlResultSetMapping 和 @ConstructorResult 有什么好处?使用 JPQL SELECT NEW SomeConstructor 是否更好?是否更好?
我是一名优秀的程序员,十分优秀!