2016-06-07 11 views
0

Mein erster TischJPA Beziehung nicht ein zu arbeiten viele

CREATE TABLE `DEVICE_REGISTRATION` (
     `DEV_ID` bigint(20) NOT NULL AUTO_INCREMENT, 
     `PARTY_PTY_ID` int(11) NOT NULL, 
     `PTY_AUTH_PIN` varchar(45) DEFAULT NULL, 
     `COOKIE` varchar(45) DEFAULT NULL, 
     `DEVICE_ID` varchar(45) DEFAULT NULL, 
     `STATUS` varchar(45) DEFAULT NULL, 
     `PNS_DEVICE_ID` varchar(45) DEFAULT NULL, 
     PRIMARY KEY (`DEV_ID`), 
     KEY `fk_PARTY_AUTH_MECH_PARTY2_idx` (`PARTY_PTY_ID`), 
     CONSTRAINT `fk_PARTY_AUTH_MECH_PARTY2` FOREIGN KEY (`PARTY_PTY_ID`) REFERENCES `PARTY` (`PTY_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION 
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 

Das ist mein Partytisch

CREATE TABLE `PARTY` (
    `PTY_ID` int(11) NOT NULL AUTO_INCREMENT, 
    `PTY_NAME` varchar(45) DEFAULT NULL, 
    `PTY_SECOND_NAME` varchar(45) DEFAULT NULL, 
    `PTY_ADDRESS_LINE_1` varchar(45) DEFAULT NULL, 
    `PTY_ADDRESS_LINE_2` varchar(45) DEFAULT NULL, 
    `PTY_ADDRESS_LINE_3` varchar(45) DEFAULT NULL, 
    `PTY_TOWN` varchar(45) DEFAULT NULL, 
    `PTY_POST_CODE` varchar(45) DEFAULT NULL, 
    `PTY_COUNTY` varchar(45) DEFAULT NULL, 
    `PTY_MOBILE` varchar(45) DEFAULT NULL, 
    `PTY_EMAIL` varchar(45) DEFAULT NULL, 
    `PTY_TITLE` varchar(45) DEFAULT NULL, 
    `PTY_DOB` varchar(45) DEFAULT NULL, 
    `PTY_HOUSE_NUMBER` varchar(45) DEFAULT NULL, 
    `PIN` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`PTY_ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=184 DEFAULT CHARSET=latin1; 

Das ist mein enity Klasse

@Entity 

@Table(name="PARTY") 
public class Party implements Serializable { 


    /** 
    * 
    */ 
    private static final long serialVersionUID = -193597591528824837L; 



    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "PTY_ID")  
    private long partyId ; 





@JsonProperty ("deviceRegistration") 
@OneToMany(cascade=CascadeType.ALL,mappedBy = "party") 
private List<DeviceRegistration> deviceRegistration; 


@JsonProperty ("wishList") 
@OneToMany(cascade=CascadeType.ALL,orphanRemoval=false,fetch=FetchType.EAGER) 
@JoinColumn(name="PTY_ID") 
private List<WishList> wishList; 

@JsonProperty ("first_name") 
@Column(name = "PTY_NAME") 
private String partyName ; 

@JsonProperty ("address_1") 
@Column(name = "PTY_ADDRESS_LINE_1") 
private String partyAddressLine1 ; 

@JsonProperty ("address_2") 
@Column(name = "PTY_ADDRESS_LINE_2") 
private String partyAddressLine2 ; 

@JsonProperty ("address_3") 
@Column(name = "PTY_ADDRESS_LINE_3") 
private String partyAddressLine3 ; 

@JsonProperty ("town") 
@Column(name = "PTY_TOWN") 
private String partyTown ; 

@JsonProperty ("post_code") 
@Column(name = "PTY_POST_CODE") 
private String partyPostCode ; 

/*@JsonProperty ("country") 
@Column(name = "PTY_COUNTRY") 
private String partyCountry 
change by Manoj Singh 
*/ 

@JsonProperty ("county") 
@Column(name = "PTY_COUNTY") 
private String partyCounty ; 



@JsonProperty ("phone_number") 
@Column(name = "PTY_MOBILE") 
private String partyMobile ; 

@JsonProperty ("email") 
@Column(name = "PTY_EMAIL") 
private String partyEmail ; 

@JsonProperty ("second_name") 
@Column(name = "PTY_SECOND_NAME") 
private String secondName ; 

@JsonProperty ("date_of_birth") 
@Column(name = "PTY_DOB") 
private String dateOfBirth ; 

@JsonProperty ("title") 
@Column(name = "PTY_TITLE") 
private String title ; 

@JsonProperty ("house_number") 
@Column(name = "PTY_HOUSE_NUMBER") 
private String houseNumber ; 


@JsonProperty ("pass_code") 
@Column(name = "PIN") 
private String PIN ; 

@Transient 
@JsonProperty ("confirm_pin") 
private String oldPIN ; 


public String getHouseNumber() { 
    return houseNumber; 
} 

public void setHouseNumber(String houseNumber) { 
    this.houseNumber = houseNumber; 
} 

public String getPIN() { 
    return PIN; 
} 

public void setPIN(String pIN) { 
    PIN = pIN; 
} 

public String getOldPIN() { 
    return oldPIN; 
} 

public void setOldPIN(String oldPIN) { 
    this.oldPIN = oldPIN; 
} 

public long getPartyId() { 
    return partyId; 
} 

public void setPartyId(long partyId) { 
    this.partyId = partyId; 
} 

public String getPartyName() { 
    return partyName; 
} 

public void setPartyName(String partyName) { 
    this.partyName = partyName; 
} 

public String getPartyAddressLine1() { 
    return partyAddressLine1; 
} 

public void setPartyAddressLine1(String partyAddressLine1) { 
    this.partyAddressLine1 = partyAddressLine1; 
} 

public String getPartyAddressLine2() { 
    return partyAddressLine2; 
} 

public void setPartyAddressLine2(String partyAddressLine2) { 
    this.partyAddressLine2 = partyAddressLine2; 
} 

public String getPartyAddressLine3() { 
    return partyAddressLine3; 
} 

public void setPartyAddressLine3(String partyAddressLine3) { 
    this.partyAddressLine3 = partyAddressLine3; 
} 

public String getPartyTown() { 
    return partyTown; 
} 

public void setPartyTown(String partyTown) { 
    this.partyTown = partyTown; 
} 

public String getPartyPostCode() { 
    return partyPostCode; 
} 

public void setPartyPostCode(String partyPostCode) { 
    this.partyPostCode = partyPostCode; 
} 



public String getPartyMobile() { 
    return partyMobile; 
} 

public void setPartyMobile(String partyMobile) { 
    this.partyMobile = partyMobile; 
} 

public String getPartyEmail() { 
    return partyEmail; 
} 

public void setPartyEmail(String partyEmail) { 
    this.partyEmail = partyEmail; 
} 

public String getSecondName() { 
    return secondName; 
} 

public void setSecondName(String secondName) { 
    this.secondName = secondName; 
} 

public String getDateOfBirth() { 
    return dateOfBirth; 
} 

public void setDateOfBirth(String dateOfBirth) { 
    this.dateOfBirth = dateOfBirth; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public String getPartyCounty() { 
    return partyCounty; 
} 

public void setPartyCounty(String partyCounty) { 
    this.partyCounty = partyCounty; 
} 
public List<DeviceRegistration> getDeviceRegistration() { 
    return deviceRegistration; 
} 

public void setDeviceRegistration(List<DeviceRegistration> deviceRegistration) { 
    this.deviceRegistration = deviceRegistration; 
} 

}

Dies ist meine zweite Klasse

package com.savio.rest.bean; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 
import javax.persistence.Table; 

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 
import com.fasterxml.jackson.annotation.JsonProperty; 


/** 
* 
* @author Manoj Singh 
* 
*This class is Entity bean class 
*it is Use to persist The device in db 
*/ 
@Entity 
@Table(name="DEVICE_REGISTRATION") 
public class DeviceRegistration implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 7466031115272826215L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "DEV_ID") 
    @JsonIgnoreProperties 
    @JsonProperty ("DEV_ID") 
    private long devId; 

/* @JsonIgnoreProperties 
    @Column(name = "PARTY_PTY_ID") 
    @JsonProperty ("PARTY_PTY_ID") 
    private long ID;*/ 

    @ManyToOne 
    private Party party; 


    @JsonIgnoreProperties 
    @Column(name = "PTY_AUTH_PIN") 
    @JsonProperty ("PTY_AUTH_PIN") 
    private String partyAuthPIN ; 

    @JsonIgnoreProperties 
    @Column(name = "COOKIE") 
    @JsonProperty ("COOKIE") 
    private String cookie ; 

    @Column(name = "DEVICE_ID") 
    @JsonProperty ("DEVICE_ID") 
    private String deviceId ; 

    @JsonIgnoreProperties 
    @Column(name = "STATUS") 
    @JsonProperty ("STATUS") 
    private String status ; 

    @JsonIgnoreProperties 
    @Column(name = "PNS_DEVICE_ID") 
    @JsonProperty ("PNS_DEVICE_ID") 
    private String PNSDeviceId ; 




    public long getDevId() { 
     return devId; 
    } 
    public void setDevId(long devId) { 
     this.devId = devId; 
    } 


    /** 
    * @return partyAuthPIN 
    ** this is partyAuthPIN 
    */ 
    public String getPartyAuthPIN() { 
     return partyAuthPIN; 
    } 

    /** 
    **@param partyAuthPIN 
    * this is partyAuthPIN 
    */ 
    public void setPartyAuthPIN(String partyAuthPIN) { 
     this.partyAuthPIN = partyAuthPIN; 
    } 

    public Party getParty() { 
     return party; 
    } 
    public void setParty(Party party) { 
     this.party = party; 
    } 
    /** 
    * @return cookie 
    * * this is cookie 
    */ 
    public String getCookie() { 
     return cookie; 
    } 
    /** 
    * @param cookie 
    ** this is cookie 
    */ 
    public void setCookie(String cookie) { 
     this.cookie = cookie; 
    } 
    /** 
    * @return String 
    ** this is String 
    */ 
    public String getDeviceId() { 
     return deviceId; 
    } 
    /** 
    * @param deviceId 
    * this is deviceId 
    * 
    */ 
    public void setDeviceId(String deviceId) { 
     this.deviceId = deviceId; 
    } 
    /** 
    * @return status 
    ** this is status 
    */ 
    public String getStatus() { 
     return status; 
    } 
    /** 
    ** @param status 
    * this is status 
    */ 
    public void setStatus(String status) { 
     this.status = status; 
    } 
    /** 
    * @return PNSDeviceId 
    * * this is PNSDeviceId 
    */ 
    public String getPNSDeviceId() { 
     return PNSDeviceId; 
    } 
    /** 
    * @param pNSDeviceId 
    ** this is pNSDeviceId 
    */ 
    public void setPNSDeviceId(String pNSDeviceId) { 
     PNSDeviceId = pNSDeviceId; 
    } 
} 

Ich versuche, die Partei der Klasse zu, aber es gibt mir Spalte ‚PARTY_PTY_ID‘ Fehler kann nicht null sein

Ich bin mit JPA mit Hibernate

partyRepository.save (Partei);

ich auf diese Weise

DeviceRegistration deviceRegistration = new DeviceRegistration(); 
deviceRegistration.setStatus("ENABLE"); 
deviceRegistration.setDeviceId(party.getDeviceRegistration().get(0).getDevic‌​eId()); 
deviceRegistration.setPNSDeviceId(""); 
Party userDetails = (Party) partyRepository.save(party); 
+0

Vielleicht elemento einfügen Sie versuchen – Abdelhak

+0

die Abfragespalte einen Nullwert Kontrolle PARTY_PTY_ID Was ich tun, ist die Partei Objekt Speichern, die hat Geräteliste in es, aber es erlaubt mir nicht –

+0

fügen Sie ein 'DeviceRegistration' Objekt zum' Partei 'Objekt – Priyamal

Antwort

0

nach dem Fehler PARTY_PTY_ID ist null.and diese Spalte in der DeviceRegistration Klasse machte, da Sie deviceRegistration Eigenschaft mit CascadeType.ALL kommentierten haben. deviceRegistration Tabelle wird auch aktualisiert, wenn Sie versuchen, Party in der Datenbank zu speichern.

@OneToMany(cascade=CascadeType.ALL,mappedBy = "party") 
private List<DeviceRegistration> deviceRegistration; 

so müssen Sie mit diesem Ansatz gehen, um beide richtig zu speichern.

Party partyOb; 
DeviceRegistration deviceregistrationob; 

deviceregistrationob.setParty(partyOb); 
partyOb.setDeviceRegistration(deviceregistrationob); 

Sie haben die party Objekt zum DeviceRegistration Objekt hinzuzufügen. und fügen Sie dann DeviceRegistration Objekt zum partyObject

bearbeitet: -

DeviceRegistration deviceRegistration = new DeviceRegistration();  
deviceRegistration.setStatus("ENABLE"); 
deviceRegistration.setPNSDeviceId(""); 

//this part was missing in your code 
List<DeviceRegistration> deviceRegistrationList = new ArrayList(); //creating a list of DeviceRegistration 
deviceRegistration.setParty(party); //adding a party to the device 
deviceRegistrationList.add(deviceRegistration); //adding device to the list 
party.setDeviceRegistration(deviceRegistrationList); //adding device list to the party. 
//**end 
deviceRegistration.setDeviceId(party.getDeviceRegistration().get(0).getDevic‌eId());//this line should be called after adding device list to the party. otherwise you'll get null pointer exception. 
Party userDetails = (Party) partyRepository.save(party); 
+0

Ich möchte, dass wenn ich meine Partei speichern mein Gerät wird speichern. Was soll ich in meiner Entität ändern? @priyamal –

+0

wie ich sagte, fügen Sie die 'Partei' zu' Gerät' hinzu. dann füge das 'Gerät' zu der' Partei' hinzu, die du bereits tust. und speichern Sie einfach das "Party" -Objekt in der Datenbank, das Gerät wird automatisch gespeichert. – Priyamal

+0

Aber in meinem Fall wird das Gerät nicht gespeichert @priyamal –