相关疑难解决方法(0)

Java - JPA - @Version注释

@Version注释如何在JPA中起作用?

我找到了各种答案,摘录如下:

JPA使用实体中的版本字段来检测对同一数据存储记录的并发修改.当JPA运行时检测到同时修改同一记录的尝试时,它会向尝试最后提交的事务抛出异常.

但我仍然不确定它是如何工作的.


同样来自以下几行:

您应该考虑版本字段不可变.更改字段值具有未定义的结果.

这是否意味着我们应该将我们的版本字段声明为final

java jpa jpa-annotations

112
推荐指数
3
解决办法
10万
查看次数

在CRUDRespository中更新或SaveorUpdate,有没有可用的选项

我正在尝试使用My Entity bean进行CRUD操作.CRUDRepository提供标准的方法find,deletesave但它有没有像一般的方法saveOrUpdate(Entity entity)是依次呼叫HibernateHibernateTemplate会话saveorUpdate()的方法.

CRUDRepository提供此功能的方式就是这样使用

@Modifying
@Query("UPDATE Space c SET c.owner = :name WHERE c.id = :id")
Integer setNameForId(@Param("name") String name, @Param("id")
Run Code Online (Sandbox Code Playgroud)

但这不是通用的,需要为完整的表单字段编写.如果有任何方法或者我可以获得Hibernate的会话或Spring HibernateTemplate的对象来解决这个问题,请告诉我.

spring spring-boot

40
推荐指数
1
解决办法
8万
查看次数

如何在Spring Data中精美地更新JPA实体?

所以我查看了有关使用Spring Data的JPA的各种教程,这在很多场合都有所不同,我不太确定正确的方法是什么.

假设有以下实体:

package stackoverflowTest.dao;

import javax.persistence.*;

@Entity
@Table(name = "customers")
public class Customer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;

@Column(name = "name")
private String name;

public Customer(String name) {
    this.name = name;
}

public Customer() {
}

public long getId() {
    return id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)

我们还有一个DTO,它在服务层中检索,然后交给控制器/客户端.

package stackoverflowTest.dto;

public class CustomerDto {

private long id;
private String name; …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data spring-data-jpa

14
推荐指数
2
解决办法
9万
查看次数

结合@PathVariable 和@RequestBody

我有一个DTO

public class UserDto {
  private Long id;
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

Controller

@RestController
@RequestMapping("user")
public Class UserController {
  @PostMapping(value = "{id}")
  public String update(@PathVariable String id, @RequestBody UserDto userDto){
    userDto.setId(id);
    service.update(userDto);
  }
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢手动放置IDfrom @PathVariableto DTO: userDto.setId(id);

对于/user/5带有 body: 的POST 请求,{ name: "test" }我如何自动设置IDin DTO,以便您获得DTO如下效果?

{
  id: 5,
  name: "test"
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想要这样的东西:

{
  id: 5,
  name: "test"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

谢谢!:)

编辑:这是一个老问题,仍然没有答案,所以我想为这个问题添加新的观点。 …

java spring spring-mvc spring-boot

7
推荐指数
1
解决办法
9249
查看次数