gpt4 book ai didi

java - 如何在 Spring Boot 的 native 查询中使用 all(array[])?

转载 作者:行者123 更新时间:2023-11-29 12:23:21 24 4
gpt4 key购买 nike

我尝试使用 all(array[]) 通过 Spring Boot 执行 native 查询功能,但是,我无法正确使用。我不知道我将传递的字符串数量,它是一个动态数量。你们能帮我解决这个问题吗?

我试过使用 List<String> , String[]只是String如下:

  1. 通过 String并在查询中 all(array[:texto]) : 没有错误,但是没有结果。

  2. 通过 List<String>并在查询中 all(array[:texto]) :

org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying ~~* record
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  1. 路过String[]并在查询中 all(array[:texto]) :
org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying ~~* bytea
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  1. 路过String[]并在查询中 all(array[CAST(:texto AS TEXT)]) : 没有错误,但是没有结果。
@Query(value="SELECT * FROM Tag WHERE nome ILIKE all(array[:texto])", nativeQuery=true)
public List<Tag> findPacotesByTexto(@Param("texto") List<String> texto);

已编辑:

@Entity
public class Tag {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@Column(nullable = false)
private String nome;

@ManyToOne
@JsonIgnore
@JoinColumn(name="pacote_id")
private Pacote pacote;

Tag() {

}

public Tag (String nome, Pacote pacote) {
this.nome = nome;
this.pacote = pacote;
}

public long getId() {
return id;
}

public String getNome() {
return nome;
}

public Pacote getPacote() {
return pacote;
}

}

我怎样才能让它工作?

提前致谢。

最佳答案

使用 spring + hibernate 和 native 查询将列表转换为 text[] 时遇到同样的问题

参见 https://stackoverflow.com/a/55179555/335264一个工作解决方案(使用两个 postgresql 函数进行转换)

关于java - 如何在 Spring Boot 的 native 查询中使用 all(array[])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57451581/

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