開發四年只會寫業務代碼,分布式高并發都不會還做程式員?->>>
注入類
@Entity
public class operationData {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer ID;
private String username;
private String password;
private Integer age;
public operationData() {
}
public void setusername(String username) {
this.username=username;
}
public void setAge(Integer age) {
this.age=age;
}
public void setpassword(String password) {
this.password=password;
}
public String getusername() {
return username;
}
}
介面
public interface userInsterface extends JpaRepository<operationData,Integer>{
public List<operationData> findByAge(Integer age);
}
@RestController
public class useroperationhttp {
operationData od=new operationData();
@Autowired
private userInsterface us;
@PostMapping(value="https://bbs.csdn.net/ca")
public operationData PostUser(@RequestParam("password") String pwd,@RequestParam("age") Integer age,@RequestParam("username") String usedata){
System.out.println("----name"+usedata);
od.setAge(age);
od.setpassword(pwd);
od.setusername(usedata);
return us.save(od);
}
啟動專案第一次執行的是插入陳述句,不知為什么發送第二次資料就變為修改了

uj5u.com熱心網友回復:
useroperationhttp 這個Controller默認是單例的; 第一次請求和第二次請求od 這個成員變數都是同一個物件..這個物件第一次插入資料庫后變成了持久態,第二次請求修改持久態的物件是不是就是update了? operationData od=new operationData(); 這行不要寫在外面!! 還有一點:us.save() 這個方法是當前資料庫存在這個主鍵的物件就會修改,不存在才插入;如果你只想插入不想修改要使用create()
uj5u.com熱心網友回復:
重新new一個operationData(為什么代碼里面大小寫這么詭異
uj5u.com熱心網友回復:
取的是同一條資料,可能主鍵問題
uj5u.com熱心網友回復:
由于你的物體,沒有主鍵, 所以,save的時候 ,會呼叫 一次Insert. 而ORM要求對于關聯維護的物件需要處于持久態, 所以,又重新select了回來, 并回傳最新的主鍵,加到物體物件里面.
uj5u.com熱心網友回復:
大家都回答的很好,幾天沒來,我自己解決了,不管怎么樣,感謝大家
uj5u.com熱心網友回復:
大佬,怎么解決的轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/284886.html
標籤:其他技術討論專區
上一篇:圖案設計
