2016-11-29 2 views
0

외국인이 포함 된 lawyer_cscd이라는 추가 테이블을 하나 생성 한 변호사, 국가,시, 구 및 지구 표가 있습니다. 위에서 언급 한 테이블 이름의 주요 관계.SQL 경고 코드 : 1364, SQLState : HY000 'district_code'필드에 기본값이 없습니다.

실제로 국가시와 구는 미리 채워진 데이터가 있습니다.이 데이터를 가져 와서 변호사와 연결하면됩니다. 나는 lawyer_cscd라는 추가 테이블을 만들었습니다.이 테이블은 모든 사람과 외래 키 관계를 가질 것입니다 5 개 개의 테이블, 내가 오류 아래

Field 'district_code' doesn't have a default value 

있어 변호사 테이블에 데이터를 삽입하려고

내 수업

@Entity 
@Table(name = "lawyer") 
public class Lawyer { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "lawyer_batch_no") 
    private int lawyerbatchNo; 

    @Column(name = "first_name") 
    @NotEmpty 
    private String firstName; 
    @Column(name = "last_name") 
    private String lastName; 
    @Column(name = "date_of_birth") 
    private Date dateOfBirth; 


    @ManyToMany(fetch = FetchType.LAZY, targetEntity = Universities.class, cascade = CascadeType.ALL) 
    @JoinTable(name = "lawyer_universities", joinColumns = @JoinColumn(name = "lawyer_batch_no", nullable = true), inverseJoinColumns = @JoinColumn(name = "university_code", nullable = true)) 
    private List<Universities> universities = new ArrayList<Universities>(); 

    @OneToOne(targetEntity = LmsUser.class, cascade = CascadeType.ALL) 
    @JoinColumn(name = "user_id") 
    private LmsUser registered_User = new LmsUser(); 

    @ManyToOne(targetEntity = Country.class, cascade = { CascadeType.ALL }) 
    @JoinTable(name = "lawyer_cscd", joinColumns = { 
      @JoinColumn(name = "lawyer_batch_no", referencedColumnName = "lawyer_batch_no") }, inverseJoinColumns = { 
        @JoinColumn(name = "country_code", referencedColumnName = "country_code") }) 
    private Country country; 
    @ManyToOne(targetEntity = State.class, cascade = { CascadeType.ALL }) 
    @JoinTable(name = "lawyer_cscd", joinColumns = { 
      @JoinColumn(name = "lawyer_batch_no", referencedColumnName = "lawyer_batch_no") }, inverseJoinColumns = { 
        @JoinColumn(name = "state_code", referencedColumnName = "state_code") }) 
    private State state; 
    @ManyToOne(targetEntity = City.class, cascade = { CascadeType.ALL }) 
    @JoinTable(name = "lawyer_cscd", joinColumns = { 
      @JoinColumn(name = "lawyer_batch_no", referencedColumnName = "lawyer_batch_no") }, inverseJoinColumns = { 
        @JoinColumn(name = "city_code", referencedColumnName = "city_code") }) 
    private City city; 
    @ManyToOne(targetEntity = District.class, cascade = { CascadeType.ALL }) 
    @JoinTable(name = "lawyer_cscd", joinColumns = { 
      @JoinColumn(name = "lawyer_batch_no", referencedColumnName = "lawyer_batch_no") }, inverseJoinColumns = { 
        @JoinColumn(name = "district_code", referencedColumnName = "district_code") }) 
    private District district; 
setter getter.... 
} 
,

지구 표

@Entity 
@Table(name = "district") 
public class District { 
    @Id 
    @Column(name = "district_code") 
    protected String district_code; 

    @Column(name = "abbreviation") 
    protected String abbreviation; 

    @Column(name = "name", nullable = false) 
    protected String name; 

    @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, targetEntity = City.class, optional = false) 
    @JoinColumn(name = "city") 
    protected City city; 


    @OneToMany(targetEntity = Lawyer.class, cascade = { CascadeType.ALL }, orphanRemoval = true) 
    @JoinTable(name = "lawyer_cscd", joinColumns = { 
      @JoinColumn(name = "district_code", referencedColumnName = "district_code") }, inverseJoinColumns = { 
        @JoinColumn(name = "lawyer_batch_no", referencedColumnName = "lawyer_batch_no") }) 
    private Set<Lawyer> lawyers=new HashSet<Lawyer>(); 
} 

국가와 국가에 대한 같은, 도시 우리가 포조 클래스

테스트 클래스

class Testing { 
public static void main(String args[]){ 
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("persistentContext.xml"); 

     RegistrationDao dao = (RegistrationDao) applicationContext.getBean("registrationDaoImpl"); 
     LmsUser lmsUser = new LmsUser(); 
     lmsUser.setUser_id(2323l); 
     lmsUser.setEmail("[email protected]"); 
     lmsUser.setLast_Login(new Date()); 
     lmsUser.setStatus(UserStatus.active); 
     dao.saveUser(lmsUser); 

     Lawyer lawyer = new Lawyer(); 
     lawyer.setFirstName("sofi"); 
     lawyer.setLastName("gupta"); 
     lawyer.setDateOfBirth(new Date()); 

     AreaOfPractise dowry = new AreaOfPractise(); 
     dowry.setActive(true); 
     dowry.setPractiseName("Murder"); 
     AreaOfPractise murder = new AreaOfPractise(); 
     murder.setActive(false); 
     murder.setPractiseName("murder"); 
     lawyer.getAreaOfPractises().add(dowry); 
     lawyer.getAreaOfPractises().add(murder); 

     Address address = new Address(); 
     address.setActive(true); 
     address.setAddressLine1("khini naka phoota kuwan"); 
     address.setAddressLine2("Kanpur"); 
     address.setAddressLine3("Up"); 
     address.setCity("Uttar Pradesh"); 
     address.setPostalCode("210001"); 
     address.setLawyer(lawyer); 

     Universities universities = new Universities(); 
     // universities.setUniversity_code("1213"); 
     universities.setUniversityName("Uttar Pradesh Technical University"); 
     universities.setUniversityAddress(address); 
     College colleges = new College(); 
     colleges.setCollege_code("DSI"); 
     colleges.setCollegeName("DSiTM"); 
     colleges.setCollegeType(CollegeType.LAW); 
     colleges.setCollegeAddress(address); 
     colleges.setUniversities(universities); 
     universities.getColleges().add(colleges); 
     universities.getLawyer().add(lawyer); 
     lawyer.setRegistered_User(lmsUser); 
     lawyer.getUniversities().add(universities); 

     ExperienceSummary experienceSummary = new ExperienceSummary(); 
     experienceSummary.setLawyer(lawyer); 
     experienceSummary.setNoOfCaseInProgress(45); 
     lawyer.setExperienceSummary(experienceSummary); 

     /*LawyerDao lawyerdao = (LawyerDao) applicationContext.getBean("lawyerDaoImpl"); 
     lawyerdao.saveLayer(lawyer); 
     for (Lawyer string1 : lawyerdao.getLawyersByName("ankur", "jadiya")) { 
      System.out.println(string1.getLawyerbatchNo()); 
      string1.getUniversities().size(); 
      for (Universities string : string1.getUniversities()) { 
       System.out.println(string.getUniversityName()); 
      } 
     } 
*/ 
     CommonDao commonDao = (CommonDao) applicationContext.getBean("commonDaoImpl"); 

     Country country = new Country(); 
     country.setCountry_code("IND"); 
     country.setAbbreviation("IND"); 
     country.setName("India"); 
     State state = new State(); 
     state.setState_code("UP"); 
     state.setAbbreviation("UP"); 
     state.setName("Uttar Pradesh"); 
     state.setCountry(country); 
     City city = new City(); 
     city.setCity_code("BNDA"); 
     city.setCityName("Banda"); 


     District district = new District(); 
     district.setDistrict_code("MUA"); 
     district.setName("MAHUA"); 
     district.setCity(city); 
     city.getDistricts().add(district); 
     District district1 = new District(); 
     district1.setDistrict_code("MAHOBA"); 
     district1.setName("MAHOBA"); 
     district1.setCity(city); 
     city.setState(state); 
     city.getDistricts().add(district1); 
     state.getCity().add(city); 
     City city1 = new City(); 
     city1.setCity_code("CNB"); 
     city1.setCityName("Kanpur"); 
     city1.setState(state); 
     state.getCity().add(city1); 
     City city2 = new City(); 
     city2.setCity_code("LKO"); 
     city2.setCityName("Lucknow"); 
     city2.setState(state); 
     state.getCity().add(city2); 

     country.getState().add(state); 
     district.getLawyers().add(lawyer); 
     city.getLawyers().add(lawyer); 
     state.getLawyers().add(lawyer); 
     country.getLawyers().add(lawyer); 
     lawyer.setCountry(country); 
     lawyer.setState(state); 
     lawyer.setCity(city); 
     lawyer.setDistrict(district); 

     commonDao.saveCountry(country); 

     LawyerDao clawDao = (LawyerDaoImpl) applicationContext.getBean("lawyerDaoImpl"); 
     clawDao.saveLayer(lawyer); 

} 

} 
+0

당신은 널 (null)는 'district_code'값을 삽입하려고하지만이 열이 null이 아닌 것을 선언해야 또는이 값이 null이 아니도록 요구하는 제한이 있습니다 – scaisEdge

+0

이 줄이 있으면 @scaisEdge lawyer.setDistrict (district); 나는 변호사 pozo와 district.getLawyers()에서 지구의 가치를 정하고있다. add (변호사); 두 가지 방법으로 값을 제공했지만 clawDao.saveLayer (변호사)는 여전히 왜 오류를 던지고 있는지 확신하지 못했습니다. – henrycharles

+0

@scaisEdge 지난 4 일 동안이 작업을 시도해 본 결과 내가 실수 한 것을 이해할 수 없게되었습니다. – henrycharles

답변

0

당신은 null의 경우, 'district_code' 값을 삽입하려고하지만 선언했다 이 열이 null이 아니거나이 값이 null이 아니도록 요구하는 제한이 있습니다

지구에서 저장

lawyer.setDistrict(district); 

clawDao.saveLayer(lawyer); 

하지만 당신은 잘 살고있다 distric1하지 지구의 후

District district1 = new District(); 
    district1.setDistrict_code("MAHOBA"); 
    district1.setName("MAHOBA"); 
    district1.setCity(city); 
+0

지구 1 객체 자체를 완전히 제거했지만 지구만 제공했지만 오류가 계속 발생합니다. – henrycharles

+0

지구를 올바르게 설정했습니다. .. (previos 코드에서 .. 할당 할 수 있습니다. distrci1 to lawyer.setDistrict (district1); – scaisEdge

+0

예 지구 참조 변수 lawyer.setDistrict (district) 및 district.getLawyers(). add (lawyer); – henrycharles

관련 문제