我有一个服务类,它通过使用 调用 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) 有没有办法将所有@RequestMapping 注释视为所有请求/URL 的映射,理想情况下可以快速链接到处理 URL 的任何控制器/方法?
在 Spring 2(注释之前)XML 配置(SimpleUrlHandlerMapping)可以用作这样的参考,现在使用带注释的控制器除了搜索代码库之外还有其他方法吗?
我正在尝试关联两个表
\n用户和地址\n一个用户有一个地址,一个地址只属于一个用户。键按地址 ID 列出\n所以我首先创建我的地址,然后创建一个用户并将其与地址 ID 链接\n但我根本无法做到这一点,我收到以下错误:
\nError 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\nRun Code Online (Sandbox Code Playgroud)\n我对休眠完全陌生,但我需要这个大学项目,所以请原谅我对这个主题的无知
\n那是我的代码:
\n用户/USUARIO 类别:
\nimport 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) 我有一个 API 端点,可以获取名称和描述参数(两者都是必需的)
createSomething(@RequestParam(value = "name") String name,@RequestParam(value = "description") String description)
Run Code Online (Sandbox Code Playgroud)
如果客户没有提供其中任何一个,他将收到 400 Bad Request
我有办法告诉客户缺少哪个字段吗?提供有关“错误请求”响应的更多信息
更新:请注意,这些参数必须是强制性的,因为我希望 OpenAPI 能够检测到这些参数是强制性的。因此,诸如“可选”和检查函数体内之类的解决方案并不是我想要的
正如标题所述,在 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包管理器安装的。
所以我下载了 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)
有人可以帮我吗?
我有以下参数
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 个单独的查询。
我有一个像这样的简单代码
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) 已经构建了一个native-image使用Spring Boot 3.0.1和GraalVM 22.3.0. 构建的native-image大小至少是原始应用程序 jar 的两倍。
我理解如果未使用的类作为本机映像构建过程的一部分被删除,它的大小应该更小。
我们总是可以在一个 .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 ×7
spring-boot ×5
spring ×4
jpa ×3
class ×1
graalvm ×1
h2 ×1
hibernate ×1
intellij-13 ×1
java-16 ×1
java-17 ×1
java-8 ×1
java-record ×1
java-stream ×1
linux ×1
query-string ×1
rest ×1
spring-mvc ×1
sql ×1
tomcat9 ×1