我有List
以下类的对象:
public class Foo {
private Date date;
private String name;
private Long number;
}
Run Code Online (Sandbox Code Playgroud)
此列表是从数据库中获取的order by date asc, number desc
,但是需要始终保留的部分是排序依据date asc
.
结果示例(Dateformat = MM/dd/yyyy
):
01/01/2016 Name1 928562
01/01/2016 Name2 910785
01/01/2016 Name3 811290
01/01/2016 Name4 811289
01/01/2016 Name5 5000000
02/01/2016 Name3 877702
02/01/2016 Name1 852960
02/01/2016 Name2 749640
02/01/2016 Name4 749500
02/01/2016 Name5 5000000
Run Code Online (Sandbox Code Playgroud)
现在我想订购该列表,以便它导致:
01/01/2016 Name2 910785
01/01/2016 Name1 928562
01/01/2016 Name3 811290
01/01/2016 Name4 811289
01/01/2016 Name5 5000000
02/01/2016 Name2 …
Run Code Online (Sandbox Code Playgroud) 我想List<String>
用72-129和132-200的数值创建一个.我想过使用一个IntStream
并将值映射到字符串并收集到列表中.我用过这段代码:
List<String> strings72to200 = Stream
.concat(Stream.of(IntStream.range(72, 129)), Stream.of(IntStream.range(132, 200)))
.map(e -> String.valueOf(e)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是,如果我调试实际值strings72to200
,我得到这个:
[java.util.stream.IntPipeline$Head@56d13c31, java.util.stream.IntPipeline$Head@5f9127c5]
Run Code Online (Sandbox Code Playgroud)
我相信这个Stream.concat()
以及.map()
导致这个问题,因为我有一个像这样的工作代码:
List<String> strings50to59 = IntStream.range(50, 60).mapToObj(e -> String.valueOf(e))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
请注意,这件作品使用的是.mapToObj()
代替.map()
.
所以问题是,如何通过流创建一个包含这些值的列表(注意初始拆分)(因为这看起来比循环更平滑)?我应该创建完整列表并在之后删除不需要的项目(在更大的间隙上不可行)吗?
我想将一个项目从 spring boot 2.2.7 迁移到 spring boot 3.0.0。为此,我使用 spring starter 生成了一个新项目,除了生成的项目之外,我还添加了一些依赖项:
完整的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.app</groupId>
<artifactId>chronos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>chronos</name>
<description>Chronos booking system</description>
<properties>
<java.version>17</java.version>
<org.mapstruct.version>1.5.3.Final</org.mapstruct.version>
<lombok.version>1.18.24</lombok.version>
<version.hibernate-jpamodelgen>6.1.5.Final</version.hibernate-jpamodelgen>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
<groupId>org.liquibase</groupId> …
Run Code Online (Sandbox Code Playgroud) 假设我有一个像下面这样的字符串
@ABCD|NN12CT55|GFR
现在我想匹配
@ABCD|N
并将其替换为
@ABCD N
用于匹配的正则表达式
@ABCD\|[^G]
有没有办法删除 | 来自捕获组?
我有一个类加载器问题与Java 9。
这段代码可用于以前的Java版本:
private static void addNewURL(URL u) throws IOException {
final Class[] newParameters = new Class[]{URL.class};
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class newClass = URLClassLoader.class;
try {
Method method = newClass.getDeclaredMethod("addNewURL", newParameters );
method.setAccessible(true);
method.invoke(urlClassLoader, new Object[]{u});
} catch (Throwable t) {
throw new IOException("Error, could not add URL to system classloader");
}
}
Run Code Online (Sandbox Code Playgroud)
从这个线程中,我了解到必须将其替换为以下内容:
Class.forName(classpath, true, loader);
loader = URLClassLoader.newInstance(
new URL[]{u},
MyClass.class.getClassLoader()
Run Code Online (Sandbox Code Playgroud)
MyClass
是我要在其中实现该Class.forName()
方法的类。
u = file:/C:/Users/SomeUser/Projects/MyTool/plugins/myNodes/myOwn-nodes-1.6.jar
String classpath = URLClassLoader.getSystemResource("plugins/myNodes/myOwn-nodes-1.6.jar").toString();
Run Code Online (Sandbox Code Playgroud)
由于某些原因-我真的不知道为什么-在运行时我收到ClassNotFoundException Class.forName(classpath, …
我的代码如下。我正在使用带有jpa和postgresql数据库的spring boot,我需要用户友好的名称作为外键。
@实体 @Table(name =“ course_table”) 公共课程课程扩展了BaseAuditingEntity { @ManyToMany(级联= CascadeType.REMOVE,提取= FetchType.EAGER) @JoinTable(name =“ course_program_table”,joinColumns = @JoinColumn(name =“ course_id”,referencedColumnName =“ course_id”,foreignKey = @ForeignKey(name =“ fk_program_id”)),inverseJoinColumns = @JoinColumn(name =“ program_id”, referencedColumnName =“ program_id”,foreignKey = @ForeignKey(name =“ fk_course_id”))) 私人名单计划; }
我已经使用@ForeignKey批注指定了外键的名称,但是当我看到db时,它显示了随机创建的外键名称。
创建表course_program_table ( course_id整数NOT NULL, program_id整数NOT NULL, 约束fk_28c95hl4nqclyvyxuduei5nbf外键(program_id) 参考public.program_table(program_id)匹配简单 无需更新时 删除任何操作后, 约束fk_5sainywquv8yyu24pjk3jptn7外键(course_id) 参考public.course_table(course_id)匹配简单 无需更新时 不删除任何动作 )
我需要注释中提到的外键,例如fk_program_id和fk_course_id。
提前致谢。
我需要重构以下代码以便在 hibernate 5 中使用。这包括删除每个已弃用的调用。
public List<T> findByExample(T example, String... excludeProperty) {
Criteria crit = session.createCriteria(T.class);
Example ex = Example.create(example);
for (String exclude : excludeProperty) {
ex.excludeProperty(exclude);
}
crit.add(ex);
return crit.list();
}
Run Code Online (Sandbox Code Playgroud)
由于createCriteria
已弃用,我打算将其替换为getSession().getCriteriaBuilder().createQuery(Foo.class);
. 从理论上讲,这是正确的方法,但现在我不知道如何进行Example
以及如何在代码中使用它。
谁能帮我使用Example
hibernate 5 吗?
我刚刚遇到了一个非常奇怪的行为。我想比较2个使用完全相同的日期d1.equals(d2);
,但结果是错误的。
调试时,我发现两个日期的“快速时间”为1531951200000
。之后,我将检查更改为d1.getTime() == d2.getTime()
并得到了相等的结果。
我还检查equals()
的方法,java.util.Date
这确实几乎完全一样
public boolean equals(Object obj) {
return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
Run Code Online (Sandbox Code Playgroud)
请注意,这两个对象都是类型java.util.Date
这就排除了,有可能是一个区别,即java.util.Date
VS java.sql.Date
。还要注意,其中一个值是从数据库中读取的,而另一个是从文件中读取的。这两个值都设置为带有java.util.Date
字段的同一类的不同实例。
有人对此有解释吗?还是我只是想念一些东西?
下课:
public class Foo {
private Date date;
private String name;
private Long number;
}
Run Code Online (Sandbox Code Playgroud)
我现在有一个List<Foo>
我要转换的Map<Date, Map<String,Long>>
(Long
应该是一个总和numbers
).让这很难的是我在内部地图中只需要26个条目,其中第26个被称为"其他",它总结了数量低于其他数字的所有数据.
我想出了以下代码:
data.stream().collect(Collectors.groupingBy(e -> e.getDate(), Collectors.groupingBy(e -> {
if (/*get current size of inner map*/>= 25) {
return e.getName();
} else {
return "Other";
}
}, Collectors.summingLong(e -> e.getNumber()))));
Run Code Online (Sandbox Code Playgroud)
如您所见,我不知道如何检查内部地图中已有的元素数量.我如何获得内部地图的当前大小,还是有另一种方法来实现我想要的?
我的Java 7代码:
Map<Date, Map<String, Long>> result = new LinkedHashMap<Date, Map<String, Long>>();
for (Foo fr : data) {
if (result.get(fr.getDate()) == null) {
result.put(fr.getDate(), new LinkedHashMap<String, Long>()); …
Run Code Online (Sandbox Code Playgroud) 我有一个引用枚举类型列表的实体。该列表存储在数据库中,如下所示:
userName role
-----------------------
user0001 role1
user0001 role2
user0001 role3
user0002 role1
Run Code Online (Sandbox Code Playgroud)
对应的java类大致是这样的:
@Entity
@Table(name = "UserTable")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "userId")
private Integer id;
@Column(name = "user_name")
private String userName;
@ElementCollection(targetClass = Role.class)
@CollectionTable(name = "User_Roles")
@Column(name = "role")
@Enumerated(EnumType.STRING)
private List<Role> roles;
}
Run Code Online (Sandbox Code Playgroud)
我检查了这个和这个问题的映射。然而我有两个问题。第一个问题是这userName
不是我的 PK,UserTable
据我所知,hibernate 确实加入了 PK。
第二个问题是当前设置的错误:
org.hibernate.LazyInitializationException:无法延迟初始化角色集合:com.project.Common.User.roles,无法初始化代理 - 没有会话
此错误应通过EAGER
加载来修复,但是当我尝试该错误时,在启动时出现以下错误:
java.lang.IllegalStateException:尝试针对查询空间 uid [<gen:1>] 注册多个 SQL 表别名 [roles1_、roles2_ 等]
我需要更改什么才能使此映射正常工作?
请注意,如果可能的话,我不想执行任何数据库更改。 …
java ×9
hibernate ×3
jpa ×3
java-8 ×2
java-stream ×2
spring ×2
classloader ×1
date ×1
enums ×1
equals ×1
jar ×1
java-9 ×1
jpa-2.0 ×1
mapping ×1
nested-loops ×1
regex ×1
sorting ×1
spring-boot ×1