从带有嵌入 id 的 hibernate 查询返回的空列表

2023-11-22

我有一个带有嵌入式密钥的实体。实体只有键作为字段,键有7个字段,其中一些字段可以为空。

当我运行以下查询时:

Criteria criteria = session.createCriteria(getPersistentClass());
criteria.add(Restrictions.eq("id.profPropertyId", profileExtensionName));
Object obj = criteria.list();
log.info(obj);
return (List<ProfileExtensions>) obj; 

我得到了正确数量的结果,但每个结果都是空的(即我得到了 4000 个空对象的列表)。我尝试过使用 HQL 查询和条件,但它们都给出相同的结果。

映射类是从现有数据库生成的。

查询生成的SQL如下

select this_.PROF_DATA_TYPE as PROF1_14_0_, this_.PROF_EXT_KEY as PROF2_14_0_, 
       this_.PROF_KEY as PROF3_14_0_, this_.PROF_NAME as PROF4_14_0_, 
       this_.PROF_PROPERTY_ID as PROF5_14_0_, this_.PROF_VALUE as PROF6_14_0_, 
       this_.PROF_VALUE_EXTENDED as PROF7_14_0_ 
from EMPINST.PROFILE_EXTENSIONS this_ 
where this_.PROF_PROPERTY_ID=?

看起来它应该返回正确的数据。

映射文件非常简单(并且从模式生成:

// Generated Oct 18, 2010 11:08:08 PM by Hibernate Tools 3.2.2.GA
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name="PROFILE_EXTENSIONS"
    ,schema="EMPINST"
    , uniqueConstraints = @UniqueConstraint(columnNames={"PROF_KEY", "PROF_PROPERTY_ID"}) )
public class ProfileExtensions  implements java.io.Serializable {


 private ProfileExtensionsId id;

public ProfileExtensions() {
}

public ProfileExtensions(ProfileExtensionsId id) {
   this.id = id;
}

 @EmbeddedId

@AttributeOverrides( {
    @AttributeOverride(name="profKey", column=@Column(name="PROF_KEY", nullable=false, length=36) ), 
    @AttributeOverride(name="profPropertyId", column=@Column(name="PROF_PROPERTY_ID", nullable=false, length=64) ), 
    @AttributeOverride(name="profExtKey", column=@Column(name="PROF_EXT_KEY", length=256) ), 
    @AttributeOverride(name="profName", column=@Column(name="PROF_NAME", length=256) ), 
    @AttributeOverride(name="profDataType", column=@Column(name="PROF_DATA_TYPE", length=64) ), 
    @AttributeOverride(name="profValue", column=@Column(name="PROF_VALUE", length=1024) ), 
    @AttributeOverride(name="profValueExtended", column=@Column(name="PROF_VALUE_EXTENDED") ) } )
  public ProfileExtensionsId getId() {
    return this.id;
  }

  public void setId(ProfileExtensionsId id) {
      this.id = id;
  }
}

一般来说,将可空列作为复合 id 的一部分可能不是一个好主意。就我而言,这是必需的,因为我有一个使用外连接创建的视图,并且我遇到了与您描述的完全相同的问题。我能够使用提供的信息解决它https://hibernate.atlassian.net/browse/HHH-1109。我使用了 Hibernate Jira 附件中提供的 NullableStringType。在我的复合 id 类中,我使用了:

@Type(type = "nl.pinkroccade.quarant.common.model.hibernate.type.NullableStringType")
private String nullableField;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从带有嵌入 id 的 hibernate 查询返回的空列表 的相关文章

随机推荐

  • 找不到模块 FBSDKCoreKit Cocoapods

    我正在尝试使用 CocoaPods 使用 use frameworks 将 facebook 集成到我的应用程序中 标签 并根据 Facebook 的此处说明 还包括吊舱螺栓 当我尝试使用时import FBSDKCoreKit在我的 ap
  • 代理与自然/业务密钥[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 又来了 老争论依然出现 我们是否最好将业务键作为主键 或者我们宁愿使用对业务键字段具有唯一约束的代理 ID 即 SQL Server 标识 请提供例子或证据来支持你的理论 使用代理键的几个
  • 按连接值对 R 数据帧进行分组

    我没有找到 R 中这个常见分组问题的解决方案 这是我的原始数据集 ID State 1 A 2 A 3 B 4 B 5 B 6 A 7 A 8 A 9 C 10 C 这应该是我分组的结果数据集 State min ID max ID A 1
  • SVN 术语 - 签出、工作副本、属性、存储库

    当我尝试学习如何使用时svn externals 我很难理解这些术语的差异 它们有何不同 工作副本 and checkout 有时构建是有用的工作副本这是由许多不同的结账 source property 在 Subversion 中 您可以
  • 哪个性能更好: test != null 或 null != test [重复]

    这个问题在这里已经有答案了 考虑以下两行代码 if test null and if null test 从性能角度来看 上述两种说法有什么区别吗 我见过很多人使用后者 当被问及时 他们说这是最佳实践 但没有充分的理由 没有不同 第二个原因
  • 导入web3到next js会报错

    我正在使用 next js 和 Material ui 构建一个用于学习的演示 dapp 我已经安装了元掩码 到目前为止我只能设置一个 连接到钱包 按钮 我陷入了必须导入 Web3 构造函数的困境 我的代码如下所示 我的包 json 的屏幕
  • 如何删除文件最后一行的最后一个字符? [复制]

    这个问题在这里已经有答案了 我在一个文件中有这组行 info info info info 我想要这样的文件 没有最后一个 info info info info 我怎样才能在 bash 中做到这一点 任何想法 您可以使用sed sed s
  • 确保控制器在 Unity 中具有无参数公共构造函数

    我在控制器上遇到了这个问题 尝试创建类型为 的控制器时发生错误 WebMvc Controllers HomeController 确保控制器具有无参数公共构造函数 找到了ApiController的解决方案 但是没有找到关于普通Contr
  • $this->render 和 $this->redirect Symfony2 之间的区别

    this gt render 和 this gt redirect 之间有什么区别 有没有一种方法可以像我使用 this gt redirect 那样使用 this gt render 传递参数 return this gt render
  • jQuery:如何确定单击了哪个
  • 标签?
  • 我正在创建一个包含 5 行文本的表单 每个文本都允许用户选择是否希望文本居中 左对齐或右对齐 我有一个未编号的列表 其中列表元素为 x5 li img src images justify left png alt left span Ju
  • AWS - 通过 EBS 实现跨可用区冗余的任何方法

    我正在寻找 EBS 的冗余解决方案 理想情况下 我们会在每个可用区都有一个 EBS 卷 类似于主从配置 当主 EBS 卷发生故障时 所有读 写操作都将定向到辅助卷 该卷用于存储应用程序的用户数据 而不是操作系统或应用程序文件或类似的内容 将
  • 如何使用 Get-ChildItem -exclude 排除多个文件夹?

    我需要为我们的 Pro Engineer CAD 系统生成一个配置文件 我需要我们服务器上特定驱动器的文件夹的递归列表 但是 我需要排除其中包含 ARCHIVE 的任何文件夹 包括各种不同的情况 我写了以下内容 除了不排除文件夹外 它可以工
  • Android Alarm AlarmManager 提供的四种 Alarm 有什么区别以及何时使用什么?

    我想知道之间的区别RTC RTC WAKEUP ELAPSED REALTIME ELAPSED REALTIME WAKEUP 我想编写一个闹钟应用程序 我将在其中设置闹钟并关闭我的应用程序 并期望在设置的时间发出闹钟 会有多个警报 现在
  • 如何在 ASP.Net 应用程序中设置默认时区

    您好 我创建了 ASP NET Web 应用程序 没有考虑时区 我直接使用 DateTime Now 函数 实际上 这会以服务器配置的时区格式返回日期时间 现在我无法更改整个应用程序 那么有什么方法可以将应用程序的时区设置为独立于托管该应用
  • 为什么在这里使用 static_cast 而不是 reinterpret_cast 很重要?

    回复 Raymond Chen 博文 有提问者指出 Raymond 我相信 C 示例是不正确的 因为这个位置 派生类中的基类子对象的属性未指定 根据 ISO C 2003 标准 10 3 第 168 页 并且您假设 基类子对象始终位于开头
  • LDAP 嵌套组成员资格

    是否可以创建一个 LDAP 查询来返回 或检查 嵌套组中的用户 例如UserA是GroupA的成员 GroupA是GroupB的成员 我想要对 GroupB 进行查询以返回 UserA 是成员 仅限 LDAP 服务器是活动目录 是 使用 L
  • 如何强制重新加载NLog配置文件?

    我正在将 NLog 与配置文件一起使用 为了避免在一些长时间的治疗中记录太多的东西 我正在做这样的事情 foreach LoggingRule rule in LogManager Configuration LoggingRules ru
  • 为什么 Typescript 中的 Event.target 不是 Element?

    我只是想用我的KeyboardEvent var tag evt target tagName toLowerCase While Event target属于类型EventTarget 它不继承自Element 所以我必须这样投射 var
  • 为什么parentForm引用为空?

    我有一个应用程序 其中我在表单上添加了用户控件 当我检查时this parentForm在 userControl 构造函数中 它给出了一个空引用 我的用户控制代码就像 public UserControl1 InitializeCompo
  • 从带有嵌入 id 的 hibernate 查询返回的空列表

    我有一个带有嵌入式密钥的实体 实体只有键作为字段 键有7个字段 其中一些字段可以为空 当我运行以下查询时 Criteria criteria session createCriteria getPersistentClass criteri