第一次使用 JPA 用起來很舒服,可惜遇到不會的問題直接嗝屁了, 經常感覺並不比mybatis配合代碼生成器好使,少維護了不少sql還是挺好的,只不過看不到sql着實不太讓mybatis玩家放心
更新部分字段網上給的方法大都是將原來的數據補上,感覺太麻煩了,有一次修改字段名發現MySQL中原來的字段沒被刪掉,於是就想能不能多個實體對應同一張表,這樣它沒有get方法連null都取不出來看它怎么更新
然后我就嘗試了一下:
這是原來的數據:
Role.java
package kim.nzxy.auth.models.role;
import kim.nzxy.auth.models.permission.Permission;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Set;
/**
* @author xy
*/
@Data
@Entity
public class Role implements Serializable {
@Id
private Integer id;
private String name;
private String remark;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "role_permission",
joinColumns = {@JoinColumn(name = "role",
referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "permission",
referencedColumnName = "id")})
private Set<Permission> permissions;
}
這是RoleSimple.java:
package kim.nzxy.auth.models.role;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author Xiaoyan
* @date 2019/12/13 9:54
*/
@Entity
@Table(name = "role")
@Data
public class RoleSimple {
@Id
private Integer id;
private String name;
private String remark;
}
這樣重新寫一個RoleSimpleRepository發現更新時沒將關聯表中的信息刪除,甚是開心,缺點就是多寫了一個實體類,誰有更簡單的方法請多指教