2012-02-24 220 views
0

我有一个相当奇怪的情况。我有一些使用netbeans生成的实体,除了一个之外,我可以保留所有实体。我看到数据库和实体类没有区别。有人可以帮助我,这里是我的实体类,数据库和我收到的错误EclipseLink GeneratedValue null postgres只在一个实体

CREATE TABLE objekat 
(
    id_objekat bigserial NOT NULL, 
id_opstina serial NOT NULL, 
naziv character varying(50) NOT NULL, 
kapacitet character varying(50), 
adresa character varying(100), 
lokacija_sirina double precision, 
lokacija_duzina double precision, 
opis character varying(500), 
korisnicko_ime character varying(50), 
sifra character varying(50), 
maks_broj_slike integer, 
absolute_path_logo character varying(255), 
CONSTRAINT objekat_pkey PRIMARY KEY (id_objekat), 
CONSTRAINT fkobjekat924176 FOREIGN KEY (id_opstina) 
    REFERENCES opstina (id_opstina) MATCH SIMPLE 
    ON UPDATE NO ACTION ON DELETE NO ACTION 
) 
WITH (
OIDS=FALSE 
); 

这是我的实体bean。

@Entity 
@Table(name = "objekat") 
@XmlRootElement 
@NamedQueries({ 
@NamedQuery(name = "Objekat.findAll", query = "SELECT o FROM Objekat o"), 
@NamedQuery(name = "Objekat.findByIdObjekat", query = "SELECT o FROM Objekat o WHERE o.idObjekat = :idObjekat"), 
@NamedQuery(name = "Objekat.findByNaziv", query = "SELECT o FROM Objekat o WHERE upper (o.naziv) like upper(:naziv)"), 
@NamedQuery(name = "Objekat.findByNazivAndOpstina", query = "SELECT o FROM Objekat o inner join o.idOpstina op WHERE upper (o.naziv) like upper(:naziv) and op.idOpstina = :idOpstina"), 
@NamedQuery(name = "Objekat.findByKapacitet", query = "SELECT o FROM Objekat o WHERE o.kapacitet = :kapacitet"), 
@NamedQuery(name = "Objekat.findByAdresa", query = "SELECT o FROM Objekat o WHERE o.adresa = :adresa"), 
@NamedQuery(name = "Objekat.findByLokacijaSirina", query = "SELECT o FROM Objekat o WHERE o.lokacijaSirina = :lokacijaSirina"), 
@NamedQuery(name = "Objekat.findByLokacijaDuzina", query = "SELECT o FROM Objekat o WHERE o.lokacijaDuzina = :lokacijaDuzina")}) 
public class Objekat implements Serializable { 


@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "id_objekat",columnDefinition = "BIGSERIAL") 
private Long idObjekat; 

@Size(max = 255) 
@Column(name = "absolute_path_logo") 
private String absolutePathLogo; 
@OneToMany(mappedBy = "objekatidObjekat") 
private List<DogadjajObjekat> dogadjajObjekatList; 
@OneToMany(mappedBy = "objekatidObjekat") 
private List<SlikeLokacijaObjekat> slikeLokacijaObjekatList; 
@OneToMany(mappedBy = "idObjekat") 
private List<RasporedObjekat> rasporedObjekatList; 
@Column(name = "maks_broj_slike") 
private Integer maksBrojSlike; 
@Size(max = 50) 
@Column(name = "korisnicko_ime") 
private String korisnickoIme; 
@Size(max = 50) 
@Column(name = "sifra") 
private String sifra; 
@Size(max = 500) 
@Column(name = "opis") 
private String opis; 
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation 
@Column(name = "lokacija_sirina") 
private Double lokacijaSirina; 
@Column(name = "lokacija_duzina") 
private Double lokacijaDuzina; 



@Basic(optional = false) 
@NotNull 
@Size(min = 1, max = 50) 
@Column(name = "naziv") 
private String naziv; 
@Size(max = 50) 
@Column(name = "kapacitet") 
private String kapacitet; 
@Size(max = 100) 
@Column(name = "adresa") 
private String adresa; 
@JoinTable(name = "tip_objekta_objekat", joinColumns = { 
    @JoinColumn(name = "objekatid_objekat", referencedColumnName = "id_objekat")}, inverseJoinColumns = { 
    @JoinColumn(name = "tip_objektaid_tip_objekta", referencedColumnName = "id_tip_objekta")}) 
@ManyToMany 
private List<TipObjekta> tipObjektaList; 
@JoinColumn(name = "id_opstina", referencedColumnName = "id_opstina") 
@ManyToOne(optional = false) 
private Opstina idOpstina; 

public Objekat() { 
} 

public Objekat(Long idObjekat) { 
    this.idObjekat = idObjekat; 
} 

public Objekat(Long idObjekat, String naziv) { 
    this.idObjekat = idObjekat; 
    this.naziv = naziv; 
} 

public Long getIdObjekat() { 
    return idObjekat; 
} 

public void setIdObjekat(Long idObjekat) { 
    this.idObjekat = idObjekat; 
} 

public String getNaziv() { 
    return naziv; 
} 

public void setNaziv(String naziv) { 
    this.naziv = naziv; 
} 

public String getKapacitet() { 
    return kapacitet; 
} 

public void setKapacitet(String kapacitet) { 
    this.kapacitet = kapacitet; 
} 

public String getAdresa() { 
    return adresa; 
} 

public void setAdresa(String adresa) { 
    this.adresa = adresa; 
} 



@XmlTransient 
public List<TipObjekta> getTipObjektaList() { 
    return tipObjektaList; 
} 

public void setTipObjektaList(List<TipObjekta> tipObjektaList) { 
    this.tipObjektaList = tipObjektaList; 
} 




public Opstina getIdOpstina() { 
    return idOpstina; 
} 

public void setIdOpstina(Opstina idOpstina) { 
    this.idOpstina = idOpstina; 
} 

@Override 
public int hashCode() { 
    int hash = 0; 
    hash += (idObjekat != null ? idObjekat.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 Objekat)) { 
     return false; 
    } 
    Objekat other = (Objekat) object; 
    if ((this.idObjekat == null && other.idObjekat != null) || (this.idObjekat != null && !this.idObjekat.equals(other.idObjekat))) { 
     return false; 
    } 
    return true; 
} 

@Override 
public String toString() { 
    return "rs.dzetSet.entiteti.Objekat[ idObjekat=" + idObjekat + " ]"; 
} 

public String getOpis() { 
    return opis; 
} 

public void setOpis(String opis) { 
    this.opis = opis; 
} 

public Double getLokacijaSirina() { 
    return lokacijaSirina; 
} 

public void setLokacijaSirina(Double lokacijaSirina) { 
    this.lokacijaSirina = lokacijaSirina; 
} 

public Double getLokacijaDuzina() { 
    return lokacijaDuzina; 
} 

public void setLokacijaDuzina(Double lokacijaDuzina) { 
    this.lokacijaDuzina = lokacijaDuzina; 
} 


public String getKorisnickoIme() { 
    return korisnickoIme; 
} 

public void setKorisnickoIme(String korisnickoIme) { 
    this.korisnickoIme = korisnickoIme; 
} 

public String getSifra() { 
    return sifra; 
} 

public void setSifra(String sifra) { 
    this.sifra = sifra; 
} 


public Integer getMaksBrojSlike() { 
    return maksBrojSlike; 
} 

public void setMaksBrojSlike(Integer maksBrojSlike) { 
    this.maksBrojSlike = maksBrojSlike; 
} 

public void pocevajMaksBrojSlike(){ 
    this.maksBrojSlike++; 
} 

public String getAbsolutePathLogo() { 
    return absolutePathLogo; 
} 

public void setAbsolutePathLogo(String absolutePathLogo) { 
    this.absolutePathLogo = absolutePathLogo; 
} 

@XmlTransient 
public List<RasporedObjekat> rasporedObjekatListPrePodne(){ 
List<RasporedObjekat> rez = new ArrayList<RasporedObjekat>(); 
if(rasporedObjekatList==null){ 
    rasporedObjekatList = new ArrayList<RasporedObjekat>(); 
} 
for(RasporedObjekat ro:rasporedObjekatList){ 
    if(!ro.getVecernjiProgram()){ 
     rez.add(ro); 
    } 
} 
return rez; 
} 


@XmlTransient 
public List<RasporedObjekat> rasporedObjekatListPoslePodne(){ 
List<RasporedObjekat> rez = new ArrayList<RasporedObjekat>(); 
if(rasporedObjekatList==null){ 
    rasporedObjekatList = new ArrayList<RasporedObjekat>(); 
} 
for(RasporedObjekat ro:rasporedObjekatList){ 
    if(ro.getVecernjiProgram()){ 
     rez.add(ro); 
    } 
} 
return rez; 
} 

@XmlTransient 
public List<DogadjajObjekat> getDogadjajObjekatList() { 
    return dogadjajObjekatList; 
} 

public void setDogadjajObjekatList(List<DogadjajObjekat> dogadjajObjekatList) { 
    this.dogadjajObjekatList = dogadjajObjekatList; 
} 

@XmlTransient 
public List<SlikeLokacijaObjekat> getSlikeLokacijaObjekatList() { 
    return slikeLokacijaObjekatList; 
} 

public void setSlikeLokacijaObjekatList(List<SlikeLokacijaObjekat> slikeLokacijaObjekatList) { 
    this.slikeLokacijaObjekatList = slikeLokacijaObjekatList; 
} 

@XmlTransient 
public List<RasporedObjekat> getRasporedObjekatList() { 
    return rasporedObjekatList; 
} 

public void setRasporedObjekatList(List<RasporedObjekat> rasporedObjekatList) { 
    this.rasporedObjekatList = rasporedObjekatList; 
} 

我坚持它在一个相当正常的方式,或者我只是这么认为。

utx.begin(); 
      if(noviObjekat.getIdObjekat() == null){ 
       em.persist(noviObjekat); 
      }else{ 
       em.merge(noviObjekat); 
      } 
utx.commit(); 

,我也得到一个非常奇怪的错误

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: org.postgresql.util.PSQLException: ERROR: null value in column "id_opstina" violates not-null constraint 
Error Code: 0 
Call: INSERT INTO objekat (absolute_path_logo, adresa, kapacitet, korisnicko_ime, lokacija_duzina, lokacija_sirina, maks_broj_slike, naziv, opis, sifra, id_opstina) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
bind => [11 parameters bound] 
Query: InsertObjectQuery(rs.dzetSet.entiteti.Objekat[ idObjekat=null ]) 

}

回答

相关问题