I am passing date and email through post request and accepting them in validatebasicdetails api. When I am comparing the recieved date that is in yyyy-MM-dd format to the one which is stored in database, I am unable to fetch the expected record.
Post request: { "emailAddress":"smith@abc.com", "dateOfBirth":"2019-12-12" }
When I am printing the object I received from post request it's printing it as
Customer [uniqueIdNumber=null, dateOfBirth=Wed Dec 12 05:30:00 IST 1990, emailAddress=smith@abc.com, firstName=null, lastName=null, idType=null, customeraddress=null, simdetails=null]
the date here is not in yyyy-MM-dd format.
Customerdto.java
package com.jpa.Proj.DTOs;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import com.jpa.Proj.Entities.Customeraddress;
import com.jpa.Proj.Entities.Simdetails;
public class CustomerDTO {
String uniqueIdNumber;
@DateTimeFormat(pattern="yyyy-MM-dd")
Date dateOfBirth;
String emailAddress;
String firstName;
String lastName;
String idType;
Customeraddress customeraddress;
Simdetails simdetails;
public String getUniqueIdNumber() {
return uniqueIdNumber;
}
public CustomerDTO(String uniqueIdNumber, Date dateOfBirth, String emailAddress, String firstName, String lastName,
String idType, Customeraddress customeraddress, Simdetails simdetails) {
super();
this.uniqueIdNumber = uniqueIdNumber;
this.dateOfBirth = dateOfBirth;
this.emailAddress = emailAddress;
this.firstName = firstName;
this.lastName = lastName;
this.idType = idType;
this.customeraddress = customeraddress;
this.simdetails = simdetails;
}
@Override
public String toString() {
return "Customer [uniqueIdNumber=" + uniqueIdNumber + ", dateOfBirth=" + dateOfBirth + ", emailAddress="
+ emailAddress + ", firstName=" + firstName + ", lastName=" + lastName + ", idType=" + idType
+ ", customeraddress=" + customeraddress + ", simdetails=" + simdetails + "]";
}
public CustomerDTO() {
super();
}
public void setUniqueIdNumber(String uniqueIdNumber) {
this.uniqueIdNumber = uniqueIdNumber;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getIdType() {
return idType;
}
public void setIdType(String idType) {
this.idType = idType;
}
public Customeraddress getCustomeraddress() {
return customeraddress;
}
public void setCustomeraddress(Customeraddress customeraddress) {
this.customeraddress = customeraddress;
}
public Simdetails getSimdetails() {
return simdetails;
}
public void setSimdetails(Simdetails simdetails) {
this.simdetails = simdetails;
}
}
Customer.java
package com.jpa.Proj.Entities;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
public class Customer {
@Id
String uniqueIdNumber;
@DateTimeFormat(pattern="yyyy-MM-dd")
Date dateOfBirth;
String emailAddress;
String firstName;
String lastName;
String idType;
@OneToOne(cascade= CascadeType.ALL)
@JoinColumn(name="addressId")
Customeraddress customeraddress;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "simId")
Simdetails simdetails;
public String getUniqueIdNumber() {
return uniqueIdNumber;
}
public Customer(String uniqueIdNumber, Date dateOfBirth, String emailAddress, String firstName, String lastName,
String idType, Customeraddress customeraddress, Simdetails simdetails) {
super();
this.uniqueIdNumber = uniqueIdNumber;
this.dateOfBirth = dateOfBirth;
this.emailAddress = emailAddress;
this.firstName = firstName;
this.lastName = lastName;
this.idType = idType;
this.customeraddress = customeraddress;
this.simdetails = simdetails;
}
@Override
public String toString() {
return "Customer [uniqueIdNumber=" + uniqueIdNumber + ", dateOfBirth=" + dateOfBirth + ", emailAddress="
+ emailAddress + ", firstName=" + firstName + ", lastName=" + lastName + ", idType=" + idType
+ ", customeraddress=" + customeraddress + ", simdetails=" + simdetails + "]";
}
public Customer() {
super();
}
public void setUniqueIdNumber(String uniqueIdNumber) {
this.uniqueIdNumber = uniqueIdNumber;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getIdType() {
return idType;
}
public void setIdType(String idType) {
this.idType = idType;
}
public Customeraddress getCustomeraddress() {
return customeraddress;
}
public void setCustomeraddress(Customeraddress customeraddress) {
this.customeraddress = customeraddress;
}
public Simdetails getSimdetails() {
return simdetails;
}
public void setSimdetails(Simdetails simdetails) {
this.simdetails = simdetails;
}
}
CustomerRepo.java
package com.jpa.Proj.Repos;
import java.util.Date;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;
import com.jpa.Proj.DTOs.CustomerDTO;
import com.jpa.Proj.Entities.Customer;
import com.jpa.Proj.Entities.Simdetails;
import com.jpa.Proj.Entities.Simoffers;
@Service
public interface CustomerRepo extends JpaRepository<Customer,Integer>{
@Query("SELECT c from Customer c WHERE c.emailAddress=:cemail AND c.dateOfBirth =:cdob")
Customer findByEmailAdressAndDob(@Param("cemail") String firstName,@Param("cdob") Date lastName);
@Query("Select c from Customer c Where c.uniqueIdNumber=:cun")
Customer findByID(@Param("cun") String un);
}
Following is my api:
public class Validatebasicdetailsapi {
@Autowired
CustomerRepo crepo;
@PostMapping
public CustomerDTO validatebasicdetails(@RequestBody CustomerDTO cdto) {
System.out.println(cdto);
Customer cdt= crepo.findByEmailAdressAndDob(cdto.getEmailAddress(),cdto.getDateOfBirth());
System.out.println("Customer="+cdt);
// System.out.println("date recieved="+cdto.getDateOfBirth());
return new CustomerDTO();
}
}