【问题标题】:How to specify ignore case in JPA @JoinColumn when I am using two tables entity当我使用两个表实体时如何在 JPA @JoinColumn 中指定忽略大小写
【发布时间】: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 之间有一个外键,那么它必须具有相同的大小写
  • 这个问题有解决办法吗?提前致谢。

标签: spring-boot hibernate jpa spring-data-jpa jpa-2.0


【解决方案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 是表列。
  • 非常感谢...!!西蒙·马蒂内利先生……!!成功了……!!
  • 我很乐意提供帮助。请接受我的回答。谢谢
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 2016-08-31
  • 2021-12-09
  • 1970-01-01
相关资源
最近更新 更多