我认为标题是不言自明的.android:layout_alignRight ="@ id/someId"和android:layout_toRightOf ="@ id/someId"有什么区别?
我正在使用 Spring 构建一个 Web 应用程序,现在我有一个实体、一个存储库、一个 RestController,并且我可以在浏览器中访问端点。
我现在正在尝试将 JSON 数据返回到浏览器,并且我在各种指南中看到了有关 DTO 的所有内容。
我真的需要 DTO 吗?我不能将序列化逻辑放在实体本身上吗?
我有以下实体:
@Entity(name = "courses")
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Singular
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Collection<Comment> comments = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private User createdBy;
public void addComment(Comment comment) {
comments.add(comment);
}
}
Run Code Online (Sandbox Code Playgroud)
当我从数据库加载课程时,评论将使用持久包进行初始化。当我调用 时出现问题addComment(comment),然后出现此异常:
Caused by: java.lang.UnsupportedOperationException: null
at java.base/java.util.AbstractList.add(AbstractList.java:153) ~[na:na]
at java.base/java.util.AbstractList.add(AbstractList.java:111) ~[na:na]
at org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:408) ~[hibernate-core-5.4.18.Final.jar:5.4.18.Final]
Run Code Online (Sandbox Code Playgroud)
看来休眠分配的 Persistant Bag 是一个Collection.EmptyList不可变的,因此无法添加任何注释。
我需要更改什么才能添加评论?
JpaRepository没有实体可以使用吗?在这种情况下,将其替换为 DTO。
如下示例
@Repository
public interface BffRepository extends JpaRepository<BffDTO, String> {
@Query(nativeQuery = true, value = "select\n"
+ "ent.name as enterprise_name, dep.name as department_name,\n"
+ "sq.name as squad_name, acc.firstname as job_owner_name,\n"
+ "tpt.name as test_template_name, job.name, job.job_blocked, job.job_removed,\n"
+ "job.bot_scm_branch, job.bot_scm_url, job.schedule_startdate,\n"
+ "job.expiration_date, job.timestamp,job.uuid,job.schedule_starttime,\n"
+ "tpt.job_execution_timeout\n"
+ "from portal.jobs job\n"
+ "left join portal.enterprises ent on (ent.uuid = job.enterprise_id)\n"
+ "left join portal.departments dep on (dep.uuid = job.department_id)\n"
+ "left join portal.squads sq on (sq.uuid = job.squad_id)\n"
+ …Run Code Online (Sandbox Code Playgroud) 我正在从提供者那里了解 MessageBodyReader 方法的工作原理。我看到该方法返回一个对象,但我不确定如何从服务访问该对象。我可以获得有关如何从 reader 类返回对象的解释吗?这将帮助我为所有 DTO 应用读取规则。提前致谢!
服务:
@POST
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/CreateAccount")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response createAccount(@Context HttpServletRequest req) {
String a = "Reader success? ";//Would to see that string here!
return Response.ok().build();
}
Run Code Online (Sandbox Code Playgroud)
提供商:
@Provider
public class readerClass implements MessageBodyReader<Object>
{
@Override
public boolean isReadable(Class<?> paramClass, Type paramType,
Annotation[] paramArrayOfAnnotation, MediaType paramMediaType) {
// TODO Auto-generated method stub
return true;
}
@Override
public Object readFrom(Class<Object> paramClass, Type paramType,
Annotation[] paramArrayOfAnnotation, MediaType paramMediaType,
MultivaluedMap<String, String> paramMultivaluedMap, …Run Code Online (Sandbox Code Playgroud) TestDTO testDTO = new TestDTO();
for (Object attribute : row.getAttributes()) {
switch (attribute) {
case "CATEGORY":
testDTO.setCategory((String) attribute);
break;
case "DESCRIPTION":
testDTO.setDescription((String) attribute);
break;
case "NOTE":
testDTO.setNote((String) attribute);
break;
case "FEATURES":
testDTO.setFeatures((String) attribute);
break;
case "INDICATOR":
testDTO.setIndicator((String) attribute);
break;
case "LABEL":
testDTO.setLabel((String) attribute);
break;
case "TYPE":
testDTO.setType((String) attribute);
break;
default:
}
}
Run Code Online (Sandbox Code Playgroud)
正如你在上面的代码中看到的,我们使用多个 case 来设置数据。代码工作正常。
有什么方法可以减少设置这些数据的多种情况。
在上面的代码中,问题是可维护性。因为假设如果我们有 30 个字段,那么我们需要为此放置 30 个案例。
有没有其他方法可以实现相同的目标?
在不提供自定义比较器的情况下,优先级队列会按升序插入元素,但是,在删除特定元素后,顺序会发生更改。
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(10);
pq.add(1);
pq.add(2);
pq.add(2);
pq.remove(2);
for(int x: pq) {
System.out.println(x);
}
//outputs: 1 10 2, instead of expected: 1 2 10
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢。
自从我迁移到新的 IntelliJ IDEA(2023.1 社区版)以来,每次创建/导入项目时,我都会得到:
然而,当我单击 时Automatically,它最终显示:
在日志中,只有:
2023-04-23 21:52:54,529 [ 250961] INFO - #c.i.d.WindowsDefenderChecker - validation failed:
[-1] C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe [-NoProfile, -NonInteractive, -Command, (Get-AuthenticodeSignature 'C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.2\bin\defender-exclusions.ps1').Status]
Run Code Online (Sandbox Code Playgroud)
如果重要的话,这两种情况都会发生 - 当我使用经典(旧)或新 UI 时。
tools.jar 不存在于最新的 Java 版本 14 中。谁能帮助我了解它是否已被替换或在哪里?
我的系统有:
C:\Users\Admin>wmic os get osarchitecture
OSArchitecture
64-bit
Run Code Online (Sandbox Code Playgroud)
我已经通过jdk-14.0.2_windows-x64_bin.exe从Oracle 的网站下载安装了最新的 Java 版本。
安装后,我查看了安装文件夹C:\Program Files\Java\jdk-14.0.2\lib,它没有tools.jar.
我们是否需要为 JRE 安装任何其他有助于解决问题的软件包tools.jar?
如果tools.jar不存在,替代品是什么?
我正在使用 Spring Boot 2.5 编写 HTTP API 服务器。我对 Spring Boot 如何处理多个 HTTP 请求有点困惑?
假设 Spring Boot 应用程序一次处理 N 个请求。它是否为 Spring Boot 应用程序创建 N 个线程?