2017-04-03 32 views
0

我有一個用戶(員工)數據庫如何在數據庫中使用DAO

@Entity 
@Table(name = "user") 

public class User { 

public enum Role{ 
    USER,ADMIN 
} 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 
@Column(name = "first_name", nullable = false) 
private String firstName; 
@Column(name = "last_name", nullable = false) 
private String lastName; 
@Column(name = "email", nullable = false, unique = true) 
private String email; 
@Column(name = "password", nullable = false) 
private String password; 
@Column(name = "company", nullable = false) 
private String company; 
private String title; 
@Enumerated(EnumType.STRING) 
@Column(name = "role", nullable = false) 
private Role role = Role.USER; 


public User() { 
} 

public User(String firstName, String lastName, String email, String password, String company, String title) 

     { 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.email = email; 
    this.password = password; 
    this.company = company; 
    this.title = title; 
    } 

更新只有一個字段我有UserDao.java

@Repository 
public interface UserDao extends JpaRepository<User,Long> { 
User findByEmail(String email); 
} 

當然UserController.java和

@RequestMapping(value = "/edit-active-user/{email:.+}", method = RequestMethod.GET) 
public String editActiveUserAgainGet(@PathVariable String email, Model model) { 

    System.out.println(email.toString()); 
    User user = userDao.findByEmail(email); 
    model.addAttribute("user", user); 
    return "editUser"; 
} 

@RequestMapping(value = "/edit", method = RequestMethod.POST) 
public String saveUserAgain(@ModelAttribute User user) { 

    userDao.save(user); 

    return "redirect:/"; 
} 

在名爲editUser的jsp文件中,我有一個包含例如:

<div class="form-group"> 
        <label class="control-label col-sm-2" for="title">Title:</label> 
        <div class="col-sm-6"> 
         <input required value="${user.title}" name="title" type="text" id="title" class="form-control" placeholder="Enter your job title" autofocus> 
        </div> 
       </div> 

根據每個用戶的屬性沒有密碼

在屬性更新期間,所有這些屬性都會再次保存(甚至其中一些還未更改),但密碼爲NULL,因爲它不是JSP形式。

+0

問題是什麼? –

+0

問題是如何更新除密碼字段以外的所有字段。密碼字段不能被覆蓋。 – sakul

回答

1

如果要更新讓我們說只有一個字段,那麼你可以寫的另一種方法,在你的倉庫@Query@Modifying註釋,例如:

@Modifying 
@Query("update user u set u.email = ?1 where u.id = ?2") 
int setEmail(String email, Long id); 

這裏的documentation

相關問題