当我使用两个表实体时如何在 JPA @JoinColumn 中指定忽略大小写

Posted

技术标签:

【中文标题】当我使用两个表实体时如何在 JPA @JoinColumn 中指定忽略大小写【英文标题】:How to specify ignore case in JPA @JoinColumn when I am using two tables entity 【发布时间】:2022-01-03 19:20:07 【问题描述】:

我有两个实体。帐户实体和 B_Account。

在 Account 实体中,我正在加入如下表。

@ManyToOne(fetch=eger)
@JoinColumn(name = "a_type")
private B_Account b_Account;

现在问题是 Account 中的 a_type 属性值为“ganesh”,而 B_Account 中的属性值为“GANESH”。 这就是我使用存储库方法使用 findBy(B_Account) 时没有获取数据的原因。

现在我想在加入上表时做一些事情,以便它可以忽略大小写。

感谢高级..!!

【问题讨论】:

那表示你的数据库中没有外键?您应该清理数据并引入一个不会发生这种情况的外键 不,我有主键和外键。我只想在@joincolumn 中忽略大小写。 --> 现在问题是 Account 中的 a_type 属性值为“ganesh”,而 B_Account 中的属性值为“GANESH”。这就是我使用存储库方法使用 findBy(B_Account) 时没有获取数据的原因。现在我想在加入上面的表格中做一些事情,以便它可以忽略大小写。 是的,但是如果您在 a_type 和 b_account 之间有一个外键,那么它必须具有相同的大小写 这个问题有解决办法吗?提前致谢。 【参考方案1】:

你可以试试@JoinFormula,这是一个Hibernate专有注解,JPA中不存在。

@ManyToOne(fetch=eger)
@JoinFormula(name = "lower(b_account) = a_type")
private B_Account b_Account;

我无法测试,所以请尝试一下。

文档:https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#associations-JoinFormula

【讨论】:

** 无效 低于异常。谢谢但不工作。 ---> 无法忽略帐户类型的大小写,属性必须'acc_type'必须引用字符串 什么是 acc_type? acc_type 是表列。 非常感谢...!!西蒙·马蒂内利先生……!!成功了……!! 我很乐意提供帮助。请接受我的回答。谢谢

以上是关于当我使用两个表实体时如何在 JPA @JoinColumn 中指定忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JPA 和 Hibernate 连接两个不相关的实体

如何使用 JPA Criteria API 连接不相关的实体

在 Spring JPA 中删除实体

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

如何使用 Spring Data JPA 连接两个表

后端数据库异步更改时如何刷新JPA实体?