当前位置: 首页 > 知识库问答 >
问题:

Hibernate列公式返回null

狄钧
2023-03-14

在我的hibernate映射文件中,为了获取员工的全名,我定义了如下列公式。

<property name="empFirstName" column="emp_First_Name" type="string"
        not-null="false" lazy="false" />
    <property name="empLastName" column="emp_Last_Name" type="string"
        not-null="false" lazy="false" /><property name="fullName" formula="concat(emp_First_Name, ' ', emp_Last_Name)" />

但是如果任何一个属性(FIRST或LAST NAME)为null,它将返回null。我如何使它为null属性返回空字符串...?

共有3个答案

高宸
2023-03-14

知道了。。。

COALESCE(A, B)如果A不为空则返回A,如果A为空则返回B

因此我需要的是

CONCAT( COALESCE(emp_First_Name,''),'',COALESCE(emp_Last_Name,'') )

因此,如果其中一个属性为null,则返回另一个属性且不为null。如果两个属性都为null,则返回空字符串

贾沛
2023-03-14

我猜你的问题是,如果每个属性(firstName或lastName)都为null,如何处理null。

在代码中,您应该执行以下操作(创建对象并设置FirstName和lastName)

例如:
String firstName="Joe";account.setFirstname(firstName);

只需使用null值检查firstName,并将其设置为空,如下所示

if(firstName.equal(null))
   firstName = ""; // set an empty value to it.

我希望这对你有帮助!

金晨
2023-03-14

您可以尝试在整个列公式上使用COALESCE()

<property name="fullName"
          formula="select coalesce(concat(emp_First_Name, ' ', emp_Last_Name), '') from employee" />

COALESCE(A, B)在JPA或原始SQL中的工作方式是,当A不是null时,它输出A,当A为null时,它输出B

 类似资料:
  • 有一点公式的乐趣,这让我发疯。我们有一些代码通过公式获取实体,数据库中没有链接,需要在运行时完成,因此@formula的用法。下面是课堂的样子: 公式是这样建立的: 现在,我最初直接使用列DEFAULT\u COST\u CENTER\u SAP\u CODE和DEFAULT\u WBS\u SAP\u CODE,而不使用内部select,但是在这两列上都得到了错误的无效标识符,所以我想我应该尝试

  • 返回指定ID密钥对中的公钥。 调用: web3.shh.getPublicKey(id, [callback]) 参数: id:String - 密钥对的ID,调用shh.newKeyPair()或shh.addPrivateKey()得到 callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值: String - 成功时返回指定密钥对的公钥,否

  • 我有一个包含2列store_number和manager_id的表,我为这个表创建了一个实体和一个存储库类。 它返回一个空列表,但是当我直接执行上面的查询时,我会得到结果。 请帮我做这个。我在这里做错什么了吗?

  • 无论如何,这个公式是否可以修改为返回,例如:找到单词“哇”,并将该单词返回到单元格中,而不是true/false? 谢谢。

  • 我希望我的类有一个字段,该字段返回所有公共访问的不可变列表,但在对象实例中,我希望列表是可变的,以便我可以向其添加元素。 我试过了,但不确定这是否被视为良好做法?

  • 我在Hibernate状态下使用关系时得到空。这是我的代码用户实体 登录历史实体 要获取登录历史详细信息,请执行以下操作: 我得到一张空名单。请帮忙