2017-11-01 9 views
1
によって引き起こさ

をNULL値を挿入できません は、列にNULL値を挿入することはできません「WHITE_LIST_UID」、テーブル 'ECM3.dbo.WHITE_LIST_MATCHESII';列はNULLを許可しません。 INSERT が失敗します。外部キーがnull表示され、エラーをカラムに

私は自分の問題について多くの検索を行いましたが、すべての可能な解決策を試しましたが、機能しません。私は子テーブル(WhiteListMatches)に関係oneToManyの親テーブル(WhiteList)を使用して挿入しようとしていますが、それは以前のエラーを示しています!

WhiteList.java(親)

import java.io.Serializable; 
    import java.util.ArrayList; 
    import java.util.List; 
    import javax.persistence.Basic; 
    import javax.persistence.CascadeType; 
    import javax.persistence.Column; 
    import javax.persistence.Entity; 
    import javax.persistence.GeneratedValue; 
    import javax.persistence.GenerationType; 
    import javax.persistence.Id; 
    import javax.persistence.OneToMany; 
    import javax.persistence.Table; 

    @Entity 
    @Table(name = "WHITE_LISTII") 
    public class WhiteList implements Serializable { 

     @Id 
     @Column(name = "WHITE_LIST_UID") 
     @GeneratedValue(strategy = GenerationType.IDENTITY) 
     private Integer whiteListUid; 

     @Basic(optional = false) 
     @Column(name = "ENTITY_NAME") 
     private String entityName; 

     @OneToMany(cascade = CascadeType.ALL,mappedBy = "whiteList") 
     private List<WhiteListMatches> matches = new ArrayList<>(); 

     public WhiteList() { 
     } 

     public WhiteList(Integer whiteListUid) { 
      this.whiteListUid = whiteListUid; 
     } 

     public WhiteList(Integer whiteListUid, String entityName) { 
      this.whiteListUid = whiteListUid; 
      this.entityName = entityName; 
     } 

     public Integer getWhiteListUid() { 
      return whiteListUid; 
     } 

     public void setWhiteListUid(Integer whiteListUid) { 
      this.whiteListUid = whiteListUid; 
     } 

     public String getEntityName() { 
      return entityName; 
     } 

     public void setEntityName(String entityName) { 
      this.entityName = entityName; 
     } 

     public List<WhiteListMatches> getMatches() { 
      return matches; 
     } 

     public void setMatches(List<WhiteListMatches> matches) { 
      this.matches = matches; 
     }   

     @Override 
     public int hashCode() { 
      int hash = 0; 
      hash += (whiteListUid != null ? whiteListUid.hashCode() : 0); 
      return hash; 
     } 

     @Override 
     public boolean equals(Object object) { 
      // TODO: Warning - this method won't work in the case the id fields are not set 
      if (!(object instanceof WhiteList)) { 
       return false; 
      } 
      WhiteList other = (WhiteList) object; 
      if ((this.whiteListUid == null && other.whiteListUid != null) || (this.whiteListUid != null && !this.whiteListUid.equals(other.whiteListUid))) { 
       return false; 
      } 
      return true; 
     } 

     @Override 
     public String toString() { 
      return "com.model.datagear.entity.WhiteList[ whiteListUid=" + whiteListUid + " ]"; 
     } 

    } 

WhiteListMatches.java(子)

import java.io.Serializable; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 

@Entity 
@Table(name = "WHITE_LIST_MATCHESII") 
public class WhiteListMatches implements Serializable { 

    @Id 
    @Column(name = "ID") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Integer id; 

    @Column(name = "MATCH_ENTITY_NAME") 
    private String matchEntityName; 

    @Column(name = "MATCH_ENTITY_ADDRESS") 
    private String matchEntityAddress; 

    @Column(name = "MATCH_ENTITY_YEAR_OF_BIRTH") 
    private String matchEntityYearOfBirth; 

    @Column(name = "MATCH_ENTITY_DATE_OF_BIRTH") 
    private String matchEntityDateOfBirth; 

    @Column(name = "MATCH_ENTITY_PLACE_OF_BIRTH") 
    private String matchEntityPlaceOfBirth; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "WHITE_LIST_UID", nullable = false) 
    private WhiteList whiteList; 

    public WhiteListMatches() { 
    } 

    public WhiteListMatches(Integer id) { 
     this.id = id; 
    } 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getMatchEntityName() { 
     return matchEntityName; 
    } 

    public void setMatchEntityName(String matchEntityName) { 
     this.matchEntityName = matchEntityName; 
    } 

    public String getMatchEntityAddress() { 
     return matchEntityAddress; 
    } 

    public void setMatchEntityAddress(String matchEntityAddress) { 
     this.matchEntityAddress = matchEntityAddress; 
    } 

    public String getMatchEntityYearOfBirth() { 
     return matchEntityYearOfBirth; 
    } 

    public void setMatchEntityYearOfBirth(String matchEntityYearOfBirth) { 
     this.matchEntityYearOfBirth = matchEntityYearOfBirth; 
    } 

    public String getMatchEntityDateOfBirth() { 
     return matchEntityDateOfBirth; 
    } 

    public void setMatchEntityDateOfBirth(String matchEntityDateOfBirth) { 
     this.matchEntityDateOfBirth = matchEntityDateOfBirth; 
    } 

    public String getMatchEntityPlaceOfBirth() { 
     return matchEntityPlaceOfBirth; 
    } 

    public void setMatchEntityPlaceOfBirth(String matchEntityPlaceOfBirth) { 
     this.matchEntityPlaceOfBirth = matchEntityPlaceOfBirth; 
    } 

    public WhiteList getWhiteList() { 
     return whiteList; 
    } 

    public void setWhiteList(WhiteList whiteList) { 
     this.whiteList = whiteList; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof WhiteListMatches)) { 
      return false; 
     } 
     WhiteListMatches other = (WhiteListMatches) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "com.model.datagear.entity.WhiteListMatches[ id=" + id + " ]"; 
    } 

} 

挿入方法

public void inertIntoWhiteList(String entityName, Set<Party> parties) { 
     Transaction tx = null; 
     List<WhiteListMatches> matches = new ArrayList<>(); 
     Iterator it = parties.iterator(); 
     while (it.hasNext()) { 
      Party p = (Party) it.next(); 
      WhiteListMatches w = createWhiteListMatch(p); 
      matches.add(w); 
     } 
     try {   
      hibernateSession = getSession(); 
      tx = hibernateSession.beginTransaction(); 
      WhiteList whiteListEntity = new WhiteList(); 
      whiteListEntity.setEntityName(entityName); 

      for (WhiteListMatches wl : matches) { 
       whiteListEntity.getMatches().add(wl); 
      } 
      hibernateSession.save(whiteListEntity); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } finally { 
      tx.commit(); 
      hibernateSession.close(); 
     } 
    } 

WhitListMatche sはcreateWhitListMatchヘルパーを通してSet<Party>から初期化されています誰かがどのように不思議に思うかリストはそれからのデータを得た。私のすべてのPKはDB内の同一性もあります。

private WhiteListMatches createWhiteListMatch(Party party) { 
     WhiteListMatches whiteListMatch = new WhiteListMatches(); 
     whiteListMatch.setMatchEntityAddress(party.getADDRESS()); 
     if (party.getX_BIRTH_DT() != null) { 
       whiteListMatch.setMatchEntityDateOfBirth(party.getX_BIRTH_DT().toString()); 
     } 
     whiteListMatch.setMatchEntityName(party.getENTITY_NAME()); 
     whiteListMatch.setMatchEntityPlaceOfBirth(party.getPLACE_OF_BIRTH()); 
     whiteListMatch.setMatchEntityYearOfBirth("" + party.getX_YEAR_OF_BIRTH()); 
     return whiteListMatch; 
    } 
+0

私は試してみましたあなたの溶液中で、このような方法を持っているのが一般的であるが、それはまだ同じ問題に取り組んでいません! –

+0

whiteListUidの代わりにWHITE_LIST_UIDがこれを試しましたが、それと同じエラーがあります。 –

答えて

1

Hibernateは追加の作業を行いません。したがって、 WhiteListMatcheswhiteList == nullがある場合、Hibernateはnullをデータベースに保存します。

は、あなたはそのような何かを行うことができます。

for (WhiteListMatches wl : matches) { 
    wl.setWhiteList(whiteListEntity); 
    whiteListEntity.getMatches().add(wl); 
} 

またWhiteList

public void addMatches(List<WhiteListMatches> matches) { 
    for (WhiteListMatches wl : matches) { 
     wl.setWhiteList(this); 
     this.matches.add(wl); 
    } 
}  
+0

はい、それはあなたの解決策です。深い調査の結果、私は発見したことに同意しています。 –

関連する問題