gpt4 book ai didi

java - JPA:如何在 save() 之前删除不必要的 SELECT?

转载 作者:行者123 更新时间:2023-12-02 00:59:06 24 4
gpt4 key购买 nike

我有一个实体 Student这是 @ManyToOne与另一个实体 School ,哪里School预先存在于数据库中并且已修复。

实体User :

@Data
@Entity(name = "user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@Column(nullable = false)
private String username;

@ManyToOne
private School school;
}

实体School :

@Data
@Entity(name = "school")
public class School {
@Id
@Column(unique = true, nullable = false)
private int id;

@Column(nullable = false)
private String name;

private String shorten;

@JsonProperty(value = "logo_url")
private String logoUrl;

private float longitude;

private float latitude;

@Column(nullable = false)
private boolean opened;
}

添加用户时,我从 Postman 发布以下 json:

{
"username": "abcd",
"school_id": 2
}

那么,

School school = new School();
school.setId(2); //"school_id" above

User user = new User();
user.setUsername("abcd");
user.setSchool(school);

userRepository.save(user);

因为我认为要添加一个新的user ,只有School id就足够了,没有其他School需要参数。但每次我运行时,它都会运行 select选择 School 的所有字段的语句通过id之前save()

我的问题是:如何去掉这个不必要的操作,以便在save()之前,没有必要select ? (我知道可以实现自定义sql语句,但是我感觉这会破坏JPA的面向对象)

最佳答案

在实体类上使用以下注释

@SelectBeforeUpdate(value=false)

关于java - JPA:如何在 save() 之前删除不必要的 SELECT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60927756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com