小编Pan*_*kos的帖子

如何在本机查询 JPA 中传递参数

我有一个服务类,它通过使用 调用 JPA 存储库来接收汽车列表carRepository.retrieveCars()。存储库方法使用本机查询来检索记录。

public interface CarRepository extends JpaRepository<Car, String> {
    @Query(nativeQuery = true,
           value = "select *" +
                   "from car_records")
 }
 List<Car> retrieveCars(); 
Run Code Online (Sandbox Code Playgroud)

现在我想传递参数carRepository.retrieveCars(Long vinNo, Long serialNo)并在查询中使用它们。我想我需要一些东西作为准备好的陈述。但是我不确定如何实现。

public interface CarRepository extends JpaRepository<TRace, String> {
    @Query(nativeQuery = true,
           value = "select *" +
                   "from car_records" +
                    "where carVinNo = ?! and carSerialNo >= ?1")
 }
 
 query.setParameter(1, vinNo, 2,serialNo);   //this is certainly not correct implementation
 List<Car> retrieveCars(vinNo, serialNo); 
Run Code Online (Sandbox Code Playgroud)

java sql spring jpa spring-data-jpa

28
推荐指数
1
解决办法
9万
查看次数

有没有办法在 Intellij IDEA 中查看所有 @RequestMapping URL 的映射?

有没有办法将所有@RequestMapping 注释视为所有请求/URL 的映射,理想情况下可以快速链接到处理 URL 的任何控制器/方法?

在 Spring 2(注释之前)XML 配置(SimpleUrlHandlerMapping)可以用作这样的参考,现在使用带注释的控制器除了搜索代码库之外还有其他方法吗?

spring spring-mvc intellij-idea spring-boot intellij-13

5
推荐指数
1
解决办法
6460
查看次数

与 hibernate JPA 的一对一

我正在尝试关联两个表

\n

用户和地址\n一个用户有一个地址,一个地址只属于一个用户。键按地址 ID 列出\n所以我首先创建我的地址,然后创建一个用户并将其与地址 ID 链接\n但我根本无法做到这一点,我收到以下错误:

\n
Error creating bean with name \'entityManagerFactory\' defined in class path resource [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException: Cannot invoke "org.hibernate.mapping.PersistentClass.getTable ()" because "classMapping" is null\n
Run Code Online (Sandbox Code Playgroud)\n

我对休眠完全陌生,但我需要这个大学项目,所以请原谅我对这个主题的无知

\n

那是我的代码:

\n

用户/USUARIO 类别:

\n
import org.hibernate.validator.constraints.br.CPF;\n\nimport javax.persistence.*;\nimport javax.validation.constraints.*;\n\n\npublic class Usuario{\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Integer id;\n\n    @Column\n    @NotNull\n    @Size(min = 5,max = 30)\n    @Pattern(regexp = "^[a-zA-Z\\s]*$", …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa h2 spring-boot

4
推荐指数
1
解决办法
6793
查看次数

错误的请求响应,缺少字段名称 - Spring Boot

我有一个 API 端点,可以获取名称和描述参数(两者都是必需的)

createSomething(@RequestParam(value = "name") String name,@RequestParam(value = "description") String description)
Run Code Online (Sandbox Code Playgroud)

如果客户没有提供其中任何一个,他将收到 400 Bad Request

我有办法告诉客户缺少哪个字段吗?提供有关“错误请求”响应的更多信息

更新:请注意,这些参数必须是强制性的,因为我希望 OpenAPI 能够检测到这些参数是强制性的。因此,诸如“可选”和检查函数体内之类的解决方案并不是我想要的

java rest spring query-string spring-boot

4
推荐指数
1
解决办法
8021
查看次数

在 Ubuntu 中,如何设置 Tomcat 9 使用 Java 17?

正如标题所述,在 Ubuntu 20.04 中如何设置 Tomcat 9 使用 Java 17 ?

最近,我使用 Spring Boot 3.0.1 重新打包了我的 Web 项目的war文件,该项目需要 Java 17 才能运行,并尝试将其部署到 Ubuntu 20.04 服务器上的 Tomcat 9 容器。

看来最好的办法就是利用setenv.sh.

我跟踪了一些文档,bin在 中创建了一个文件夹/usr/share/tomcat9,触摸了 的文件setenv.sh,并用 编辑了其内容JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

然后运行sudo systemctl start tomcat9,但是失败。 sudo systemctl status tomcat9说“找不到 JDK 或 JRE - 请设置 JAVA_HOME 变量或安装 default-jdk 包”,

首先安装了openjdk-17-jre-headless,并删除了openjdk-11-jre-headless 。Tomcat9 和 JRE 17 都是通过apt包管理器安装的。

linux spring-boot tomcat9 java-17

4
推荐指数
2
解决办法
1万
查看次数

java:包 jdk.incubator.foreign 在 Java 15 中不可见错误

所以我下载了 JDK 15 - OpenJDK 。

在Intelij中运行以下代码

import jdk.incubator.foreign.MemorySegment;  //The problem seems to occur here in this import

public class Application {

    public static void main(String[] args){

      MemorySegment m = MemorySegment.allocateNative(400L);

   }

 }
Run Code Online (Sandbox Code Playgroud)

在 inteliJ 中,我转到文件 -> 项目结构 -> 项目 SDK -> 选择 15

在应用程序配置(Intelij运行项目)中,我声明了JRE 15(java版本15.0.2)

我收到以下错误

C:\Users\repositories\java15project\src\main\untitled\src\Application.java:2:21
java: package jdk.incubator.foreign is not visible
(package jdk.incubator.foreign is declared in module jdk.incubator.foreign, which is not in the module graph)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

java

2
推荐指数
1
解决办法
7441
查看次数

JPA 查询:如何检查 IS NULL 或 IS NOT NULL?

我有以下参数

Boolean isActive = true/false
Run Code Online (Sandbox Code Playgroud)

我需要在 JPA 查询中传递这个参数。

true =  IS NOT NULL
false = IS NULL

@Query("select t from Test t WHERE t.active = ?1")
Optional<Test> findByIds(Boolean isActive);
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点,而不是为 IS NULL 和 IS NOT NULL 创建 2 个单独的查询。

java spring jpa spring-data-jpa

2
推荐指数
1
解决办法
86
查看次数

Java Streams 将 Streams 与供应商连接起来,然后是不同的(惰性求值行为)

我有一个像这样的简单代码

import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamSupplierVersusConcat {
    public static void main(String[] args) {
         final StreamSupplierVersusConcat clazz = new StreamSupplierVersusConcat();
         clazz.doConcat();                
    }

    private void doConcat(){        
         System.out.println(Stream.concat(buildStreamFromRange(0,1000).get()
                ,buildStreamFromRange(1000,2000).get())
                .anyMatch("1"::equals));                
}

    private Supplier<Stream<String>>buildStreamFromRange(final int start,final int end){
        return ()->IntStream.range(start, end)
                .mapToObj(i->{
                    System.out.println("index At: "+i);
                    return String.valueOf(i);
                });
    }    
}
Run Code Online (Sandbox Code Playgroud)

我知道 concat 是懒惰的,所以当我运行代码时,我看到它只生成了 2 个很棒的值,但知道 distinct 是一个有状态的操作,我认为将该方法放在 Stream 管道上它会生成所有值,然后做 anyMatch 方法,但如果我这样说

    private void doConcat(){        
         System.out.println(Stream.concat(buildStreamFromRange(0,1000).get()
                ,buildStreamFromRange(1000,2000).get())
                .distinct()//ARE ALL THE VALUES GENERATED NOT REQUIRED HERE???
                .anyMatch("1"::equals));                
}
Run Code Online (Sandbox Code Playgroud)

但是有了不同的和没有它,我得到了相同的回应。

index At: 0 …
Run Code Online (Sandbox Code Playgroud)

java distinct-values java-8 java-stream

2
推荐指数
1
解决办法
91
查看次数

本机图像大小至少是实际 Jar 大小的两倍

已经构建了一个native-image使用Spring Boot 3.0.1GraalVM 22.3.0. 构建的native-image大小至少是原始应用程序 jar 的两倍。

我理解如果未使用的类作为本机映像构建过程的一部分被删除,它的大小应该更小。

spring-boot graalvm graalvm-native-image

2
推荐指数
1
解决办法
1073
查看次数

同一个 .java 文件中的多条记录

我们总是可以在一个 .java 文件中有多个类。考虑到封装以及每个类都由多行代码组成,在 1 个 .java 文件中包含 1 个类(不要谈论嵌套类)总是有意义的。

现在记录开始发挥作用,它们可以少至 1 行代码。在同一个 .java 类中封装多个记录是否有意义?

例如我们可以有

DTO.java文件将包含

record Employees(List<Employee> employees) { }  //This is just a wrapper class that we normally need in order to return a list of objects in rest web services
record Employee(String name, Integer age, List<Attribute> attributes){ }
record Attribute(String name, String value) { }
Run Code Online (Sandbox Code Playgroud)

如果没有记录具有公共访问修饰符,那么我们可以将所有记录包含在名为DTO.java的文件中

在我看来,拥有 3 个 .java 文件,每个文件中只有 1 行代码似乎不太好。

但是,我们仍然会面临类似这里描述的问题,即同一 java 文件中的多个类

java class java-record java-16

0
推荐指数
3
解决办法
158
查看次数