当我使用两个表实体时如何在 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 连接两个不相关的实体