gpt4 book ai didi

java - 执行 findBy[NAME]In(List ids) 时使用 eclipse 链接 POSTGRESQL 的 SPRING JPA 出错

转载 作者:行者123 更新时间:2023-11-29 12:13:09 28 4
gpt4 key购买 nike

我在尝试使用 findByIdIn(List ids) 时遇到了我的 SPRING JpaRepository 类的问题,例如,我想将一个 id 列表传递给 native 查询并期望它返回一个对象列表。

Maven 部门:

  • spring-data-jpa 1.4.2
  • org.eclipse.persistence.jpa 2.5.1

数据库:

  • PostgreSQL 9.3

应用服务器:

  • 玻璃鱼 4.0

这是我的存储库类

@Repository
public interface TransactionRepository extends JpaRepository<Transaction, Long>, QueryDslPredicateExecutor<Transaction> {

List<Transaction> findByIdIn(List<Long> ids);
}

数据库中的字段 ID 为 BIGINT。

当我只传递列表中的 1 个对象时它起作用,当它是列表中的 0 个或多于 1 个对象时我收到此错误:

Local Exception Stack:

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = record
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: 160
Error Code: 0
Call: SELECT ID, amount, comment, created_date, currency, status, transaction_step, transaction_type, version, provider_id, user_id FROM anix.transactions WHERE (ID IN ((?,?)))
bind => [2, 3]
Query: ReadAllQuery(referenceClass=Transaction sql="SELECT ID, amount, comment, created_date, currency, status, transaction_step, transaction_type, version, provider_id, user_id FROM anix.transactions WHERE (ID IN (?))")
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:682)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558)

如果我将 SQL 复制/粘贴到那里,它在我的管理工具中工作正常。

--- 编辑 ---

@Entity
@Table(name = "transactions", schema = "anix")
@XmlRootElement
@XmlAccessorType(FIELD)
public class Transaction implements Serializable {
@Id
@SequenceGenerator(name = "transactions_sequence", sequenceName = "transactions_id_seq", initialValue = 1, allocationSize = 1)
@GeneratedValue(strategy = SEQUENCE, generator = "transactions_sequence")
@XmlID
@XmlElement
private Long id;

在此方面提供任何帮助,我们将不胜感激!

问候

最佳答案

看起来像一个BUG。看这里:DATAJPA-433在这里:Bug 349477

关于java - 执行 findBy[NAME]In(List<Long> ids) 时使用 eclipse 链接 POSTGRESQL 的 SPRING JPA 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631382/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com