【问题标题】:Insert into mysql with jsf and many to one relashionship用jsf和多对一关系插入mysql
【发布时间】:2014-07-23 07:18:37
【问题描述】:

我不想同时插入表“参与者”和表“Avis”(这些表之间的关系是一对多)。当我每次运行该应用程序时,它都会显示错误。两个表的insert都没问题,只是Avis表的外键有问题,取空值。 真的我需要帮助,而且我是 Java Developpemnt 的初学者,所以这可能是一个愚蠢的错误。 这是我的 managedBean:

@ManagedBean(name = "participBean") 
@RequestScoped 
public class ParticipBean implements Serializable { 
private static final long serialVersionUID = 1L; 
ApplicationContext context= new ClassPathXmlApplicationContext("beans.xml"); 
ParticipantService ParticipantServ=(ParticipantService);
context.getBean("ParticipantService"); 
AvisService AvisServ=(AvisService) context.getBean("AvisService"); 
private int idParticipant; 
private Integer idAvis; 
private Participant particip; 
private Avis avis; 
public Avis getAvis() { 
return avis; 
} 
public void setAvis(Avis avis) { 
this.avis = avis; 
} 
public int getId_avis() { 
return idAvis; 
} 
public void setId_avis(Integer idAvis) { 
this.idAvis = idAvis; 
} 
public Participant getParticip() { 
return particip; 
} 
public void setParticip(Participant particip) { 
this.particip = particip; 
} 
public int getId_interet() { 
return id_interet; 
} 
public void setId_interet(int id_interet) { 
this.id_interet = id_interet; 
} 
public Integer getId_participant() { 
return idParticipant; 
} 
public void setId_participant(Integer idParticipant) { 
this.idParticipant = idParticipant; 
} 
public ParticipBean() { 
particip=new Participant(); 
avis=new Avis(); 
} 
public void save(ActionEvent actionEvent){ 
Participant ad=ParticipantServ.findById(idParticipant); 
avis.setParticipant(ad); 
AvisServ.save(avis); 
ParticipantServ.save(particip); 
addMessage("Profil ajouté avec succès !"); 
avis=new Avis(); 
} 
} 
}

有什么帮助吗? 这是映射 参与者.java:

private Set<Avis>listeAvis=new HashSet<Avis>();
@OneToMany(mappedBy="participant",cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})
public Set<Avis> getListeAvis() {
    return listeAvis;
}

public void setListeAvis(Set<Avis> listeAvis) {
    this.listeAvis = listeAvis;
}

Avis.java:

private Participant participant;
@ManyToOne(targetEntity=com.pfeAndroid.Beans.Participant.class)
@JoinColumn(name="id_participant")
public Participant getParticipant() {
    return participant;
}

public void setParticipant(Participant participant) {
    this.participant = participant;
}

【问题讨论】:

  • 你能和我们分享你得到的错误,然后你使用的是持久化框架吗?如果是,您可以与我们分享您的地图吗?我们需要很多信息来帮助您
  • 嗨,Skizzo,我正在使用休眠进行持久化,这是每次GRAVE: java.lang.NullPointerException javax.faces.el.EvaluationException: java.lang.NullPointerException at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 时显示的错误。我在主代码中添加了映射。

标签: spring hibernate jsf


【解决方案1】:

我认为你的麻烦在于你试图先拯救 avis 对象以拯救相关对象。然后根据您的配置,您定义了一个级联礼貌,同意您仅保存参与者对象。总结你可以做的:

    public void save(ActionEvent actionEvent){ 
    Participant ad=ParticipantServ.findById(idParticipant); 
    avis.setParticipant(ad); 
    ParticipantServ.save(particip); 
    AvisServ.save(avis); 
    addMessage("Profil ajouté avec succès !"); 
    avis=new Avis(); 
}

    public void save(ActionEvent actionEvent){ 
    Participant ad=ParticipantServ.findById(idParticipant); 
    ad.getListeAvis().add(avis)
    ParticipantServ.save(particip); 

    addMessage("Profil ajouté avec succès !"); 
    avis=new Avis(); 
}

【讨论】:

  • Skizzo,我试过你的代码,我不知道为什么,但每次都会显示 nullPointException!
  • 您是否尝试查看 NPE 发生在哪里(通过调试)?
【解决方案2】:

我解决了 NPE 的问题,这是函数 save 的正确代码:

public void save(ActionEvent actionEvent){

                particip.setIdParticipant(idParticipant);
                avis.setParticipant(particip);
                particip.getListeAvis().add(avis);
                ParticipantServ.save(particip);
                AvisServ.save(avis); 

                addMessage("Profil ajouté avec succès !"); 
                particip=new Participant();
                avis=new Avis(); 
            }

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2021-06-30
    • 2015-03-16
    • 2022-12-18
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多