jhipster入門疑問之路

最近要用到jhipster開發,遇到好多疑問,整理第一個
1 如何實現的數據查詢功能。
從以下代碼查看
首先是controller層代碼如下

controller層

package cn.com.yusys.uaa.web.rest;

import cn.com.yusys.uaa.domain.AdminSmUser;
import cn.com.yusys.uaa.repository.AdminSmUserRepository;
import cn.com.yusys.uaa.service.AdminSmUserService;
import com.codahale.metrics.annotation.Timed;

import cn.com.yusys.uaa.domain.User;
import cn.com.yusys.uaa.repository.UserRepository;
import cn.com.yusys.uaa.security.SecurityUtils;
import cn.com.yusys.uaa.service.MailService;
import cn.com.yusys.uaa.service.UserService;
import cn.com.yusys.uaa.service.dto.UserDTO;
import cn.com.yusys.uaa.web.rest.vm.KeyAndPasswordVM;
import cn.com.yusys.uaa.web.rest.vm.ManagedUserVM;
import cn.com.yusys.uaa.web.rest.vm.OldAndNewPassWord;
import cn.com.yusys.uaa.web.rest.util.HeaderUtil;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.*;

/**
* REST controller for managing the current user’s account.
*/
@RestController
@RequestMapping(“/api”)
public class AdminSmUserResource {

private final Logger log = LoggerFactory.getLogger(AccountResource.class);

private final UserRepository userRepository;


private final UserService userService;

private final MailService mailService;

public AdminSmUserResource(UserRepository userRepository, UserService userService,
                           MailService mailService) {

    this.userRepository = userRepository;
    this.userService = userService;
    this.mailService = mailService;
}

@Resource
private AdminSmUserService adminSmUserService;

@Resource
private AdminSmUserRepository adminSmUserRepository;

/**
 * POST  /register : 註冊用戶.
 *
 * @param managedUserVM the managed user View Model
 * @return the ResponseEntity with status 201 (Created) if the user is registered or 400 (Bad Request) if the login or email is already in use
 */
@PostMapping(path = "/register",
    produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.TEXT_PLAIN_VALUE})
@Timed
public ResponseEntity registerAccount(@Valid @RequestBody ManagedUserVM managedUserVM) {

    HttpHeaders textPlainHeaders = new HttpHeaders();
    textPlainHeaders.setContentType(MediaType.TEXT_PLAIN);

    return adminSmUserService.findOneByLoginCode(managedUserVM.getLogin().toLowerCase())
        .map(user -> new ResponseEntity<>("login already in use", textPlainHeaders, HttpStatus.BAD_REQUEST))
        .orElseGet(() -> adminSmUserRepository.findOneByUserEmail(managedUserVM.getEmail())
                .map(user -> new ResponseEntity<>("email address already in use", textPlainHeaders, HttpStatus.BAD_REQUEST))
                .orElseGet(() -> {
                    AdminSmUser adminSmUser = new AdminSmUser();
                    adminSmUser.setLoginCode(managedUserVM.getLogin());
                    adminSmUser.setUserPassword(managedUserVM.getPassword());
                    adminSmUser.setUserEmail(managedUserVM.getEmail().toLowerCase());
                    adminSmUser.setUserAvatar(managedUserVM.getImageUrl());
                    adminSmUserService.registerAccount(adminSmUser);

// mailService.sendActivationEmail(user);
return new ResponseEntity<>(HttpStatus.CREATED);
})
);
}

/**
 * GET  /account : 獲取當前用戶.
 *
 * @return the ResponseEntity with status 200 (OK) and the current user in body, or status 500 (Internal Server Error) if the user couldn't be returned
 */
@GetMapping("/account")
@Timed
public ResponseEntity<UserDTO> getAccount() {
    String loginCode = SecurityUtils.getCurrentUserLogin();

    return adminSmUserService.getUserInfo(loginCode)
        .map(user -> new ResponseEntity<>(new UserDTO(user), HttpStatus.OK))
        .orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}


/**
 * POST  /account/change_password : changes the current user's password
 *
 * @param password the new password
 * @return the ResponseEntity with status 200 (OK), or status 400 (Bad Request) if the new password is not strong enough
 */
@PostMapping(path = "/account/change_password",
    produces = MediaType.TEXT_PLAIN_VALUE)
@Timed
public ResponseEntity changePassword(@RequestBody  OldAndNewPassWord models) {
    String newPassWord = models.getNewPassword();
    String oldPassWord = models.getoldPassWord();
    //String oldPassWord="";
    if (!checkPasswordLength(newPassWord)) {
        return new ResponseEntity<>("Incorrect password", HttpStatus.BAD_REQUEST);
    }
   if( adminSmUserService.validPassword(oldPassWord)) {
    adminSmUserService.changePassword(newPassWord);
    return new ResponseEntity<>(HttpStatus.OK);
    }else {
    return new ResponseEntity<>("Incorrect password", HttpStatus.BAD_REQUEST);
    }
   }

/**
 * POST  /account : 修改用戶信息.
 *
 * @param userDTO the current user information
 * @return the ResponseEntity with status 200 (OK), or status 400 (Bad Request) or 500 (Internal Server Error) if the user couldn't be updated
 */
@PostMapping("/account")
@Timed
public ResponseEntity saveAccount(@Valid @RequestBody UserDTO userDTO) {

    Optional<User> existingUser = userRepository.findOneByEmail(userDTO.getEmail());
    if (existingUser.isPresent() && (!existingUser.get().getLogin().equalsIgnoreCase(userDTO.getLogin()))) {
        return ResponseEntity.badRequest().headers(HeaderUtil.createFailureAlert("user-management", "emailexists", "Email already in use")).body(null);
    }
    return userRepository
        .findOneByLogin(SecurityUtils.getCurrentUserLogin())
        .map(u -> {
            userService.updateUser(userDTO.getFirstName(), userDTO.getLastName(), userDTO.getEmail(),
                userDTO.getLangKey(), userDTO.getImageUrl());
            return new ResponseEntity(HttpStatus.OK);
        })
        .orElseGet(() -> new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}


/**
 * GET  /activate : 激活註冊用戶.
 *
 * @param key the activation key
 * @return the ResponseEntity with status 200 (OK) and the activated user in body, or status 500 (Internal Server Error) if the user couldn't be activated
 */
@GetMapping("/activate")
@Timed
public ResponseEntity<String> activateAccount(@RequestParam(value = "key") String key) {
    return userService.activateRegistration(key)
        .map(user -> new ResponseEntity<String>(HttpStatus.OK))
        .orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}

/**
 * GET  /authenticate : check if the user is authenticated, and return its login.
 *
 * @param request the HTTP request
 * @return the login if the user is authenticated
 */
@GetMapping("/authenticate")
@Timed
public String isAuthenticated(HttpServletRequest request) {
    log.debug("REST request to check if the current user is authenticated");
    return request.getRemoteUser();
}


/**
 * POST   /account/reset_password/init : Send an email to reset the password of the user
 *
 * @param mail the mail of the user
 * @return the ResponseEntity with status 200 (OK) if the email was sent, or status 400 (Bad Request) if the email address is not registered
 */
@PostMapping(path = "/account/reset_password/init",
    produces = MediaType.TEXT_PLAIN_VALUE)
@Timed
public ResponseEntity requestPasswordReset(@RequestBody String mail) {
    return userService.requestPasswordReset(mail)
        .map(user -> {
            mailService.sendPasswordResetMail(user);
            return new ResponseEntity<>("email was sent", HttpStatus.OK);
        }).orElse(new ResponseEntity<>("email address not registered", HttpStatus.BAD_REQUEST));
}

/**
 * POST   /account/reset_password/finish : Finish to reset the password of the user
 *
 * @param keyAndPassword the generated key and the new password
 * @return the ResponseEntity with status 200 (OK) if the password has been reset,
 * or status 400 (Bad Request) or 500 (Internal Server Error) if the password could not be reset
 */
@PostMapping(path = "/account/reset_password/finish",
    produces = MediaType.TEXT_PLAIN_VALUE)
@Timed
public ResponseEntity<String> finishPasswordReset(@RequestBody KeyAndPasswordVM keyAndPassword) {
    if (!checkPasswordLength(keyAndPassword.getNewPassword())) {
        return new ResponseEntity<>("Incorrect password", HttpStatus.BAD_REQUEST);
    }
    return userService.completePasswordReset(keyAndPassword.getNewPassword(), keyAndPassword.getKey())
        .map(user -> new ResponseEntity<String>(HttpStatus.OK))
        .orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}

private boolean checkPasswordLength(String password) {
    return !StringUtils.isEmpty(password) &&
        password.length() >= ManagedUserVM.PASSWORD_MIN_LENGTH &&
        password.length() <= ManagedUserVM.PASSWORD_MAX_LENGTH;
}

}
可以看到裏面調用了adminSmUserService這樣的service層。

單個adminSmUserService

package cn.com.yusys.uaa.service;

import cn.com.yusys.uaa.domain.AdminSmRole;
import cn.com.yusys.uaa.domain.AdminSmUser;
import cn.com.yusys.uaa.domain.AdminSmUserRoleRel;
import cn.com.yusys.uaa.domain.Authority;
import cn.com.yusys.uaa.repository.AdminSmRoleRepository;
import cn.com.yusys.uaa.repository.AdminSmUserRepository;
import cn.com.yusys.uaa.repository.AdminSmUserRoleRelRepository;
import cn.com.yusys.uaa.security.AuthoritiesConstants;
import cn.com.yusys.uaa.security.SecurityUtils;

import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.netflix.infix.lang.infix.antlr.EventFilterParser.boolean_expr_return;

import javax.annotation.Resource;
import java.util.*;

/**
* 功能描述:
*
* @author
* @date 2017年12月13日
* @company Copyright © 2016 Yusys Technologies Co., Ltd. All Rights Reserved.
*/
@Service
@Transactional
public class AdminSmUserService {
private final Logger log = LoggerFactory.getLogger(AdminSmUserService.class);

@Resource
private AdminSmUserRepository adminSmUserRepository;

@Resource
private AdminSmRoleRepository adminSmRoleRepository;

@Resource
private AdminSmUserRoleRelRepository adminSmUserRoleRelRepository;

@Resource
private PasswordEncoder passwordEncoder;


@Transactional(readOnly = true)
public Optional<AdminSmUser> findOneByLoginCode(String loginCode) {
    return adminSmUserRepository.findOneWithAuthoritiesByLoginCode(loginCode);

// return adminSmUserRepository.findOneByLoginCode(loginCode);
}

/**
 * 註冊用戶
 * //TODO 默認值臨時添加,後期調整
 *
 * @param adminSmUser
 * @return
 */
public AdminSmUser registerAccount(AdminSmUser adminSmUser) {
    String encryptedPassword = passwordEncoder.encode(adminSmUser.getUserPassword());
    AdminSmRole authority = adminSmRoleRepository.findOneByRoleCode(AuthoritiesConstants.ADMIN);//添加admin角色
    adminSmUser.setUserPassword(encryptedPassword);
    adminSmUser = adminSmUserRepository.save(adminSmUser);
    log.debug("Created Information for User: {}", adminSmUser);

    //添加用戶角色
    AdminSmUserRoleRel rel = new AdminSmUserRoleRel();
    rel.setUserId(adminSmUser.getUserId());
    rel.setRoleId(authority.getRoleId());
    rel.setRelSts("1");//TODO 修改
    rel.setLastChgUsr(adminSmUser.getLoginCode());
    String date = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
    rel.setLastChgDt(date);
    adminSmUserRoleRelRepository.save(rel);
    log.debug("Created Information for User Role Relation: {}", rel);
    return adminSmUser;
}

/**
 * 獲取用戶、權限等詳細信息
 *
 * @return
 */
@Cacheable(value = "users", key = "#loginCode")
public Optional<AdminSmUser> getUserInfo(String loginCode) {
    return adminSmUserRepository.findOneWithAuthoritiesByLoginCode(loginCode);
}

/**
 * 修改密碼
 *
 * @param password
 */
public void changePassword(String password) {
    Optional.ofNullable(adminSmUserRepository.findOneByLoginCode(SecurityUtils.getCurrentUserLogin())).ifPresent(user -> {
        String encryptedPassword = passwordEncoder.encode(password);
        user.setUserPassword(encryptedPassword);
        log.debug("Changed password for User: {}", user);
    });
}
/**
 * 修改密碼前校驗原密碼
 *
 * @param oldpassword
 */
public boolean validPassword(String password) {
    boolean passWordValid=false;
    AdminSmUser adminSmUser =adminSmUserRepository.findOneByLoginCode(SecurityUtils.getCurrentUserLogin());
    if(passwordEncoder.matches(password, adminSmUser.getUserPassword())) {
        passWordValid =  true;
    }
    return passWordValid;
}

}

在這裏面調用了adminSmUserRepository.findOneByLoginCode以及類似的方法。所以找到該方法

adminSmUserRepository

package cn.com.yusys.uaa.repository;

import cn.com.yusys.uaa.domain.AdminSmUser;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.ResponseEntity;

import java.util.Optional;

/**
* 功能描述:
*
* @author
* @date 2017年12月12日
* @company Copyright © 2016 Yusys Technologies Co., Ltd. All Rights Reserved.
*/

public interface AdminSmUserRepository extends JpaRepository

實體類

package cn.com.yusys.uaa.domain;

import cn.com.yusys.uaa.security.SecurityUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.validator.constraints.Email;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Time;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
* 功能描述:
*
* @author
* @date 2017年12月12日
* @company Copyright © 2016 Yusys Technologies Co., Ltd. All Rights Reserved.
*/
@Entity
@Table(name = “表名稱”)
public class AdminSmUser implements Serializable {

private String userId;
private String loginCode;
private String userName = " ";
private String certType = "1";
private String certNo;
private String userCode;
private Time deadline;
private String orgId = "1";
private String dptId;
private String userPassword;
private String userSex;
private Time userBirthday;
private String userEmail;
private String userMobilephone;
private String userOfficetel;
private String userEducation;
private String userCertificate;
private Time entrantsDate;
private String positionTime;
private String financialJobTime;
private String positionDegree;
private String userAvatar;
private String offenIp;
private String userSts = "1";
private String lastLoginTime;
private Time lastEditPassTime;
private String lastChgUsr = SecurityUtils.getCurrentUserLogin();
private String lastChgDt = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");

private Set<AdminSmRole> authorities = new HashSet<>();
/*@Transient
private AdminSmOrg adminSmOrg;
@Transient
private AdminSmDpt adminSmDpt;*/

@Id
@Column(name = "USER_ID")

/* @GeneratedValue(generator = “uuid2” )
@GenericGenerator(name = “uuid2”, strategy = “org.hibernate.id.UUIDGenerator” )*/
@GeneratedValue(generator = “uuid”)
@GenericGenerator(name = “uuid”, strategy = “uuid”)
public String getUserId() {
return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

@NotNull
@Basic
@Column(name = "LOGIN_CODE")
public String getLoginCode() {
    return loginCode;
}

public void setLoginCode(String loginCode) {
    this.loginCode = loginCode;
}

@Basic
@Column(name = "USER_NAME")
public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

@Basic
@Column(name = "CERT_TYPE")
public String getCertType() {
    return certType;
}

public void setCertType(String certType) {
    this.certType = certType;
}

@Basic
@Column(name = "CERT_NO")
public String getCertNo() {
    return certNo;
}

public void setCertNo(String certNo) {
    this.certNo = certNo;
}

@Basic
@Column(name = "USER_CODE")
public String getUserCode() {
    return userCode;
}

public void setUserCode(String userCode) {
    this.userCode = userCode;
}

@Basic
@Column(name = "DEADLINE")
public Time getDeadline() {
    return deadline;
}

public void setDeadline(Time deadline) {
    this.deadline = deadline;
}

@Basic
@Column(name = "ORG_ID")
public String getOrgId() {
    return orgId;
}

public void setOrgId(String orgId) {
    this.orgId = orgId;
}

@Basic
@Column(name = "DPT_ID")
public String getDptId() {
    return dptId;
}

public void setDptId(String dptId) {
    this.dptId = dptId;
}

@Basic
@Column(name = "USER_PASSWORD")
public String getUserPassword() {
    return userPassword;
}

public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
}

@Basic
@Column(name = "USER_SEX")
public String getUserSex() {
    return userSex;
}

public void setUserSex(String userSex) {
    this.userSex = userSex;
}

@Basic
@Column(name = "USER_BIRTHDAY")
public Time getUserBirthday() {
    return userBirthday;
}

public void setUserBirthday(Time userBirthday) {
    this.userBirthday = userBirthday;
}

@Basic
@Email
@Column(name = "USER_EMAIL")
public String getUserEmail() {
    return userEmail;
}

public void setUserEmail(String userEmail) {
    this.userEmail = userEmail;
}

@Basic
@Column(name = "USER_MOBILEPHONE")
public String getUserMobilephone() {
    return userMobilephone;
}

public void setUserMobilephone(String userMobilephone) {
    this.userMobilephone = userMobilephone;
}

@Basic
@Column(name = "USER_OFFICETEL")
public String getUserOfficetel() {
    return userOfficetel;
}

public void setUserOfficetel(String userOfficetel) {
    this.userOfficetel = userOfficetel;
}

@Basic
@Column(name = "USER_EDUCATION")
public String getUserEducation() {
    return userEducation;
}

public void setUserEducation(String userEducation) {
    this.userEducation = userEducation;
}

@Basic
@Column(name = "USER_CERTIFICATE")
public String getUserCertificate() {
    return userCertificate;
}

public void setUserCertificate(String userCertificate) {
    this.userCertificate = userCertificate;
}

@Basic
@Column(name = "ENTRANTS_DATE")
public Time getEntrantsDate() {
    return entrantsDate;
}

public void setEntrantsDate(Time entrantsDate) {
    this.entrantsDate = entrantsDate;
}

@Basic
@Column(name = "POSITION_TIME")
public String getPositionTime() {
    return positionTime;
}

public void setPositionTime(String positionTime) {
    this.positionTime = positionTime;
}

@Basic
@Column(name = "FINANCIAL_JOB_TIME")
public String getFinancialJobTime() {
    return financialJobTime;
}

public void setFinancialJobTime(String financialJobTime) {
    this.financialJobTime = financialJobTime;
}

@Basic
@Column(name = "POSITION_DEGREE")
public String getPositionDegree() {
    return positionDegree;
}

public void setPositionDegree(String positionDegree) {
    this.positionDegree = positionDegree;
}

@Basic
@Column(name = "USER_AVATAR")
public String getUserAvatar() {
    return userAvatar;
}

public void setUserAvatar(String userAvatar) {
    this.userAvatar = userAvatar;
}

@Basic
@Column(name = "OFFEN_IP")
public String getOffenIp() {
    return offenIp;
}

public void setOffenIp(String offenIp) {
    this.offenIp = offenIp;
}

@Basic
@Column(name = "USER_STS")
public String getUserSts() {
    return userSts;
}

public void setUserSts(String userSts) {
    this.userSts = userSts;
}

@Basic
@Column(name = "LAST_LOGIN_TIME")
public String getLastLoginTime() {
    return lastLoginTime;
}

public void setLastLoginTime(String lastLoginTime) {
    this.lastLoginTime = lastLoginTime;
}

@Basic
@Column(name = "LAST_EDIT_PASS_TIME")
public Time getLastEditPassTime() {
    return lastEditPassTime;
}

public void setLastEditPassTime(Time lastEditPassTime) {
    this.lastEditPassTime = lastEditPassTime;
}

@Basic
@Column(name = "LAST_CHG_USR")
public String getLastChgUsr() {
    return lastChgUsr;
}

public void setLastChgUsr(String lastChgUsr) {
    this.lastChgUsr = lastChgUsr;
}

@Basic
@Column(name = "LAST_CHG_DT")
public String getLastChgDt() {
    return lastChgDt;
}

public void setLastChgDt(String lastChgDt) {
    this.lastChgDt = lastChgDt;
}

//    @JsonIgnore
@ManyToMany
@JoinTable(
    name = "ADMIN_SM_USER_ROLE_REL",
    joinColumns = {@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")},
    inverseJoinColumns = {@JoinColumn(name = "ROLE_ID", referencedColumnName = "ROLE_ID")})
@BatchSize(size = 20)
public Set<AdminSmRole> getAuthorities() {
    return authorities;
}

public void setAuthorities(Set<AdminSmRole> authorities) {
    this.authorities = authorities;
}

/*
// @JsonIgnore
// @ManyToOne(cascade = {CascadeType.REFRESH})
@JoinColumn(name = “ORG_ID”, referencedColumnName = “ORG_ID”, insertable = false, updatable = false)//
public AdminSmOrg getAdminSmOrg() {
return adminSmOrg;
}

public void setAdminSmOrg(AdminSmOrg adminSmOrg) {
    this.adminSmOrg = adminSmOrg;
}

//    @JsonIgnore
*//*@ManyToOne(cascade = {CascadeType.REFRESH})
@JoinColumn(name = "DPT_ID", referencedColumnName = "DPT_ID", insertable = false, updatable = false)*//*
public AdminSmDpt getAdminSmDpt() {
    return adminSmDpt;
}

public void setAdminSmDpt(AdminSmDpt adminSmDpt) {
    this.adminSmDpt = adminSmDpt;
}*/

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    AdminSmUser that = (AdminSmUser) o;

    if (userId != null ? !userId.equals(that.userId) : that.userId != null) return false;
    if (loginCode != null ? !loginCode.equals(that.loginCode) : that.loginCode != null) return false;
    if (userName != null ? !userName.equals(that.userName) : that.userName != null) return false;
    if (certType != null ? !certType.equals(that.certType) : that.certType != null) return false;
    if (certNo != null ? !certNo.equals(that.certNo) : that.certNo != null) return false;
    if (userCode != null ? !userCode.equals(that.userCode) : that.userCode != null) return false;
    if (deadline != null ? !deadline.equals(that.deadline) : that.deadline != null) return false;
    if (orgId != null ? !orgId.equals(that.orgId) : that.orgId != null) return false;
    if (dptId != null ? !dptId.equals(that.dptId) : that.dptId != null) return false;
    if (userPassword != null ? !userPassword.equals(that.userPassword) : that.userPassword != null) return false;
    if (userSex != null ? !userSex.equals(that.userSex) : that.userSex != null) return false;
    if (userBirthday != null ? !userBirthday.equals(that.userBirthday) : that.userBirthday != null) return false;
    if (userEmail != null ? !userEmail.equals(that.userEmail) : that.userEmail != null) return false;
    if (userMobilephone != null ? !userMobilephone.equals(that.userMobilephone) : that.userMobilephone != null)
        return false;
    if (userOfficetel != null ? !userOfficetel.equals(that.userOfficetel) : that.userOfficetel != null)
        return false;
    if (userEducation != null ? !userEducation.equals(that.userEducation) : that.userEducation != null)
        return false;
    if (userCertificate != null ? !userCertificate.equals(that.userCertificate) : that.userCertificate != null)
        return false;
    if (entrantsDate != null ? !entrantsDate.equals(that.entrantsDate) : that.entrantsDate != null) return false;
    if (positionTime != null ? !positionTime.equals(that.positionTime) : that.positionTime != null) return false;
    if (financialJobTime != null ? !financialJobTime.equals(that.financialJobTime) : that.financialJobTime != null)
        return false;
    if (positionDegree != null ? !positionDegree.equals(that.positionDegree) : that.positionDegree != null)
        return false;
    if (userAvatar != null ? !userAvatar.equals(that.userAvatar) : that.userAvatar != null) return false;
    if (offenIp != null ? !offenIp.equals(that.offenIp) : that.offenIp != null) return false;
    if (userSts != null ? !userSts.equals(that.userSts) : that.userSts != null) return false;
    if (lastLoginTime != null ? !lastLoginTime.equals(that.lastLoginTime) : that.lastLoginTime != null)
        return false;
    if (lastEditPassTime != null ? !lastEditPassTime.equals(that.lastEditPassTime) : that.lastEditPassTime != null)
        return false;
    if (lastChgUsr != null ? !lastChgUsr.equals(that.lastChgUsr) : that.lastChgUsr != null) return false;
    if (lastChgDt != null ? !lastChgDt.equals(that.lastChgDt) : that.lastChgDt != null) return false;

    return true;
}

@Override
public int hashCode() {
    int result = userId != null ? userId.hashCode() : 0;
    result = 31 * result + (loginCode != null ? loginCode.hashCode() : 0);
    result = 31 * result + (userName != null ? userName.hashCode() : 0);
    result = 31 * result + (certType != null ? certType.hashCode() : 0);
    result = 31 * result + (certNo != null ? certNo.hashCode() : 0);
    result = 31 * result + (userCode != null ? userCode.hashCode() : 0);
    result = 31 * result + (deadline != null ? deadline.hashCode() : 0);
    result = 31 * result + (orgId != null ? orgId.hashCode() : 0);
    result = 31 * result + (dptId != null ? dptId.hashCode() : 0);
    result = 31 * result + (userPassword != null ? userPassword.hashCode() : 0);
    result = 31 * result + (userSex != null ? userSex.hashCode() : 0);
    result = 31 * result + (userBirthday != null ? userBirthday.hashCode() : 0);
    result = 31 * result + (userEmail != null ? userEmail.hashCode() : 0);
    result = 31 * result + (userMobilephone != null ? userMobilephone.hashCode() : 0);
    result = 31 * result + (userOfficetel != null ? userOfficetel.hashCode() : 0);
    result = 31 * result + (userEducation != null ? userEducation.hashCode() : 0);
    result = 31 * result + (userCertificate != null ? userCertificate.hashCode() : 0);
    result = 31 * result + (entrantsDate != null ? entrantsDate.hashCode() : 0);
    result = 31 * result + (positionTime != null ? positionTime.hashCode() : 0);
    result = 31 * result + (financialJobTime != null ? financialJobTime.hashCode() : 0);
    result = 31 * result + (positionDegree != null ? positionDegree.hashCode() : 0);
    result = 31 * result + (userAvatar != null ? userAvatar.hashCode() : 0);
    result = 31 * result + (offenIp != null ? offenIp.hashCode() : 0);
    result = 31 * result + (userSts != null ? userSts.hashCode() : 0);
    result = 31 * result + (lastLoginTime != null ? lastLoginTime.hashCode() : 0);
    result = 31 * result + (lastEditPassTime != null ? lastEditPassTime.hashCode() : 0);
    result = 31 * result + (lastChgUsr != null ? lastChgUsr.hashCode() : 0);
    result = 31 * result + (lastChgDt != null ? lastChgDt.hashCode() : 0);
    return result;
}

}
目前初步瞭解到只要繼承了接口JpaRepository的類就可以自動調用類中封裝的方法,因爲是接口,只能繼承不能實現。但是不用實現類也可以用。

發佈了32 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章