java - Spring Boot变量重命名问题(Hibernate)

标签 java mysql spring hibernate spring-boot

我在实体类中的变量名称是assignToassignBy,上面在MySQL db中的列名称是assignto分别分配

但是项目正在通过名称“assignmentTo”和“assignmentBy”创建它。

删除 .m2/repository 文件夹后,我已删除整个数据库并使用 mvn clean install 重新创建。

Postman 仍在 GET API 上返回“assignmentTo”和“assignmentBy”。

使用“assignTo”和“assignBy”名称调用 POST 方法,但仍然得到“assignmentTo”和“assignmentBy”。

LeadAssignment:

@Entity
@Table(name = "lead_assignment")
public class LeadAssignment {

        @Id
        @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY )
        @Column(name = "laid", nullable = false, updatable = false)
        private Long id;

        @Column(name = "first_name", nullable = false)
        private String firstname;

        @Column(name = "last_name", nullable = false)
        private String lastname;

        @Column(name = "assignto" , nullable = false)
        private String assignTo;

        @Column(name = "assignby", nullable = false)
        private String assignBy;

        @Column(name = "requirement" , nullable = false)
        private String requirements;

        @Column(name = "remark" , nullable = false)
        private String remarks;

Controller 类LeadAssignmentController:

import java.util.List;
import java.util.Map;
import java.util.Optional;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;



@RestController
@RequestMapping(value = "/leadassignment")
public class LeadAssignmentController {


    //@Autowired
    private LeadAssignmentDao leadAssignmentDao;

    LeadAssignmentController(LeadAssignmentDao leadAssignmentDao){
        this.leadAssignmentDao = leadAssignmentDao;
    }

    @GetMapping("/getall")
    List<LeadAssignment> getLeadAssignmentList() {
        System.out.println("inside lead adsdignment conntroller get mapping");
        return leadAssignmentDao.findAll();
    }

    @GetMapping("/get/{id}")
    Optional<LeadAssignment> getLeadAssignment(@PathVariable Long id) {
        return leadAssignmentDao.findById(id);
    }

     @GetMapping("/get/assignto/{assignTo}")
     LeadAssignment getLeadAssignmentAssignTo(@PathVariable String assignTo, @RequestParam Map<String, String> params){
            System.out.println("Inside start of lead assignment assign to");
            System.out.println(params);
            LeadAssignment result = leadAssignmentDao.findByAssignTo(assignTo);
            return result;
            //System.out.println("Inside end of get sales email");
    }

     @GetMapping("/get/assignby/{assignBy}")
     LeadAssignment getLeadAssignmentAssignBy(@PathVariable String assignBy, @RequestParam Map<String, String> params){
            System.out.println("Inside start of lead assignment by");
            System.out.println(params);
            LeadAssignment result = leadAssignmentDao.findByAssignBy(assignBy);
            return result;
            //System.out.println("Inside end of get sales email");
    }


    @DeleteMapping("/delete/{id}")
    public boolean deleteLeadAssignment(@PathVariable Long id) {
        leadAssignmentDao.deleteById(id);
        return true;
    }

    @PutMapping("/update/{id}")
    public LeadAssignment updateLeadAssignment(@RequestBody LeadAssignment leadAssignment, @PathVariable Long id) {
        System.out.println("Inside lead assignmet update method");
        Optional<LeadAssignment> found = leadAssignmentDao.findById(id);
        //if(!found.isPresent())
        leadAssignment.setId(id);
        leadAssignmentDao.save(leadAssignment);
        return found.get();
    }
    /*
    @PutMapping("/update/email/{email}")
    public LeadAssignment updateLeadAssignmentEmail(@RequestBody User user, @PathVariable String email ) {
        System.out.println("inside user email PUT method");
        User emailfind = userDao.findByEmail(email);
        user.setEmail(email);
        userDao.save(user);
        return emailfind;
    }
    */
    /*
    @PutMapping("/update/{id}")
    public User updateUser(@RequestBody User user) {
        return userDao.save(user);
    }
    */

    @PostMapping("/create")
    public LeadAssignment createLeadAssignment(@RequestBody LeadAssignment leadAssignment) {
        return leadAssignmentDao.save(leadAssignment);
    }
}

我的application.properties文件:

# ===============================
# = DATA SOURCE
# ===============================
# Set here configurations for the database connection
# Connection url for the database "netgloo_blog"
#spring.datasource.url=jdbc:mysql://localhost:3306/lmsAngularSpring?createDatabaseIfNotExist=true
spring.datasource.url=jdbc:mysql://localhost:3306/lms
# Username and secret
spring.datasource.username=root
spring.datasource.password=test
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
# ===============================
# = JPA / HIBERNATE
# ===============================
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager).
# Show or not log for each sql query
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.properties.hibernate.current_session_context_class = org.springframework.orm.hibernate5.SpringSessionContext
# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project

#line below was earlier un-commented
#spring.jpa.hibernate.ddl-auto=update

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.open-in-view=false
#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy

预期的 postman 输出:

  {
        "id": 1,
        "remarks": "demo3",
        "demanderRentLeadStatus": null,
        "demanderBuyLeadStatus": null,
        "supplierSellLeadStatus": null,
        "supplierRentLeadStatus": null,
        "sales": null,
        "lastname": "foo",
        "firstname": "bar",
        "assignTo": "david",
        "assignBy": "james",
        "requirements": "for rent out"
    }

postman 的实际输出:

{
    "id": 1,
    "remarks": "demo3",
    "demanderRentLeadStatus": null,
    "demanderBuyLeadStatus": null,
    "supplierSellLeadStatus": null,
    "supplierRentLeadStatus": null,
    "sales": null,
    "lastName": null,
    "firstName": null,
    "assignmentTo": null,
    "assignmentBy": null,
    "requirments": null
}

最佳答案

重命名类的 getter 和 setter。使它像: assignTo 的 getter 和 setter 分别是 getAssignTo()setAssignTo(String s)。对 assignBy 执行相同的操作。

关于java - Spring Boot变量重命名问题(Hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57253022/

相关文章:

java - Spring JPA : Insert succesfully but Update Failed (javax. persistence.PersistenceException:托管刷新期间出错)

java - 如何使用用户输入的随机整数 x 数量填充数组?

Java JAR : Could not find or load main class

MYSQL 插入唯一行

php - SQL 错误(更新 gegevens)::'1' 中的未知列 'field list'

MySQL AND & OR 运算符

java - 在类中强制使用唯一 ID

java - 使用雅虎财经

java - Spring 验证 JSR-303 @NotNull 抛出 NotReadablePropertyException

java - Spring Cacheable vs CachePut?