Mysql 如何更新包含外键字段错误的数据表行:javax.el.ELException:无法转换
我有一个在dao中返回列表的方法,如下所示。 我必须返回一个对象,因为我有一个连接查询Mysql 如何更新包含外键字段错误的数据表行:javax.el.ELException:无法转换,mysql,hibernate,jsf,primefaces,foreign-key-relationship,Mysql,Hibernate,Jsf,Primefaces,Foreign Key Relationship,我有一个在dao中返回列表的方法,如下所示。 我必须返回一个对象,因为我有一个连接查询 public List<Object> getAllBudgets(Integer id) { Session session=HibernateUtil.getSession(); try { session.beginTransaction(); Query q = session.createQu
public List<Object> getAllBudgets(Integer id) {
Session session=HibernateUtil.getSession();
try
{
session.beginTransaction();
Query q = session.createQuery("select r.libelleRubrique, b.creditOuvert, b.creditReporte from Rubrique r, Budgetisation b where r.idRubrique = b.rubrique and b.id.annee =:annee");
q.setParameter("annee", id);
listeBudgets = q.list();
return listeBudgets;
}
catch(HibernateException e)
{
throw e;
}
finally
{
session.close();
}
}
budget.xhtml
<h:body>
<h:form id="form">
<h:panelGrid columns="2" cellpadding="5">
<h:outputText value="Annee : " style="font-size: 18px" />
<p:selectOneMenu value="#{anneeBean.annee}" >
<f:selectItem itemValue="#{null}" itemLabel="--Séléctionner une année--" />
<f:selectItems value="#{anneeBean.listeAnnees}" var="annee"
itemValue="#{annee}" itemLabel="#{annee}" />
<f:ajax listener="#{anneeBean.submit()}" render="display" />
</p:selectOneMenu>
</h:panelGrid>
<br></br>
<br></br>
<p:dataTable id="display" var="listeBudgets" value="#{budgetisationBean.listeBudgets}" editable="true" style="margin-bottom:10px">
<f:facet name="header">
Budgetisation
</f:facet>
<p:column headerText="Libelle rubrique">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{listeBudgets[0]}" /></f:facet>
<f:facet name="input"><p:inputText value="#{listeBudgets[0]}" style="width:100%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Crédit ouvert">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{listeBudgets[1]}" /></f:facet>
<f:facet name="input"><p:inputText value="#{listeBudgets[1]}" style="width:100%" label="Year"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Crédit reporté ">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{listeBudgets[2]}" /></f:facet>
<f:facet name="input"><p:inputText value="#{listeBudgets[2]}" style="width:100%" label="Year"/></f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px" headerText="Modifier">
<p:commandLink styleClass="ui-icon ui-icon-pencil" action="#{budgetisationBean.update()}" process="@this" update="" oncomplete="budgetDialog.show()">
<f:setPropertyActionListener target="#{budgetisationBean.budget}" value="#{listeBudgets}" />
</p:commandLink>
</p:column>
<p:column style="width:32px" headerText="Supprimer">
<p:commandLink styleClass="ui-icon ui-icon-trash" action="#{organismedecreditBean.delete()}" process="@this" update=":form:display">
<f:setPropertyActionListener target="#{budgetisationBean.budget}" value="#{listeBudgets}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog header="Modification du budget" widgetVar="budgetDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
<p:outputPanel id="budgetDetail" style="text-align:center;">
<p:panelGrid columns="2" rendered="#{ empty budgetisationBean.budget}" columnClasses="label,value">
<h:outputText value="Rubrique : " />
<p:selectOneMenu>
<f:selectItem itemValue="#{budgetisationBean.budget.id.idRubrique}" itemLabel="#{budgetisationBean.budget.id.idRubrique}" />
</p:selectOneMenu>
<br></br>
<h:outputText value="Crédit ouvert: " />
<p:inputText value="#{budgetisationBean.budget.creditOuvert}"/>
<br></br>
<h:outputText value="Crédit reporté: " />
<p:inputText value="#{budgetisationBean.budget.creditReporte}"/>
<br></br>
<p:commandButton value="Valider" update="display" icon="ui-icon-search" styleClass="ui-priority-primary" />
</p:panelGrid>
</p:outputPanel>
</p:dialog>
</h:form>
</h:body>
预算化
BudgetisationBean.java
package controller;
@Component
@Scope("view")
public class BudgetisationBean implements java.io.Serializable{
@Autowired
private BudgetisationMetier budgetisationMetier;
@Autowired
private RubriqueMetier rubriqueMetier;
private List<Object> listeBudgets;
private List<Annee> listeAnnees;
private List<Object> listeRubriques;
private Budgetisation budget;
private BudgetisationId id;
private Rubrique rubrique;
private Annee annee;
private Double creditOuvert;
private Double modification;
private Double creditReporte;
@PostConstruct
public void init() {
listeAnnees = budgetisationMetier.getListeAnnee();
listeRubriques = budgetisationMetier.getAllRubriquesNonBudgets();
}
public List<Object> getListeRubriques() {
return listeRubriques;
}
public void setListeRubriques(List<Object> listeRubriques) {
this.listeRubriques = listeRubriques;
}
public RubriqueMetier getRubriqueMetier() {
return rubriqueMetier;
}
public void setRubriqueMetier(RubriqueMetier rubriqueMetier) {
this.rubriqueMetier = rubriqueMetier;
}
public List<Annee> getListeAnnees() {
return listeAnnees;
}
public void setListeAnnees(List<Annee> listeAnnees) {
this.listeAnnees = listeAnnees;
}
public List<Object> getListeBudgets() {
int a = AnneeBean.submit();
System.out.println(a);
listeBudgets = budgetisationMetier.getAllBudgets(a);
return listeBudgets;
}
public void update()
{
Budgetisation budget = budgetisationMetier.getBudget(this.id);
budgetisationMetier.update(budget);
}
public void delete()
{
BudgetisationId bu = new BudgetisationId(getBudget().getRubrique().getIdRubrique(),getBudget().getAnnee().getAnnee());
Budgetisation b = budgetisationMetier.getBudget(bu);
budgetisationMetier.delete(getBudget().getId());
listeBudgets.remove(budget);
budget = null;
}
public BudgetisationMetier getBudgetisationMetier() {
return budgetisationMetier;
}
public void setBudgetisationMetier(BudgetisationMetier budgetisationMetier) {
this.budgetisationMetier = budgetisationMetier;
}
public BudgetisationId getId() {
return id;
}
public void setId(BudgetisationId id) {
this.id = id;
}
public Rubrique getRubrique() {
return rubrique;
}
public void setRubrique(Rubrique rubrique) {
this.rubrique = rubrique;
}
public Annee getAnnee() {
return annee;
}
public void setAnnee(Annee annee) {
this.annee = annee;
}
public Double getCreditOuvert() {
return creditOuvert;
}
public void setCreditOuvert(Double creditOuvert) {
this.creditOuvert = creditOuvert;
}
public Double getModification() {
return modification;
}
public void setModification(Double modification) {
this.modification = modification;
}
public Double getCreditReporte() {
return creditReporte;
}
public void setCreditReporte(Double creditReporte) {
this.creditReporte = creditReporte;
}
}
包装控制器;
@组成部分
@范围(“视图”)
公共类BudgetisationBean实现java.io.Serializable{
@自动连线
私人预算编制者预算编制者;
@自动连线
私人住宅;
私人预算;
私人名单名单;
私人名单;
私人预算;
私人预算id;
私人鲁布里克鲁布里克;
私人安尼;
私人双信用证;
私人双重修改;
私人双重信用报告;
@施工后
公共void init(){
Listenee=budgetisationMetier.GetListenee();
ListRubriques=budgetisationMetier.getAllRubriquesNonBudgets();
}
公共列表getListRubriques(){
返回列表;
}
公共无效SetListRubriques(列表ListRubriques){
this.listeRubriques=listeRubriques;
}
公共RubriqueMetier getRubriqueMetier(){
返回rubriqueMetier;
}
公共无效设置RubriqueMetier(RubriqueMetier RubriqueMetier){
this.rubriqueMetier=rubriqueMetier;
}
公共列表getListenees(){
回归李斯特尼斯;
}
公共无效集合列表项(列表列表项){
this.listenenes=listenenes;
}
公共列表getListBudgets(){
int a=AnneeBean.submit();
系统输出打印项次(a);
ListBudgets=budgetisationMetier.getAllBudgets(a);
返回预算;
}
公共无效更新()
{
Budgetisation budget=budgetisationMetier.getBudget(this.id);
预算更新(预算);
}
公共作废删除()
{
BudgetisationId bu=新的BudgetisationId(getBudget().getRubrique().getIdRubrique(),getBudget().getAnnee().getAnnee());
预算化b=预算化Metier.getBudget(bu);
删除(getBudget().getId());
列出预算。删除(预算);
预算=空;
}
公共预算编制者getBudgetisationMetier(){
返回预算表;
}
公共无效设置BudgetisationMetier(BudgetisationMetier BudgetisationMetier){
this.budgetisationMetier=budgetisationMetier;
}
公共预算ID getId(){
返回id;
}
公共作废设置id(BudgetisationId){
this.id=id;
}
公共Rubrique getRubrique(){
返回rubrique;
}
公共无效设置Rubrique(Rubrique Rubrique){
this.rubrique=rubrique;
}
公共Annee getAnnee(){
返回安妮;
}
公共空间塞坦尼(Annee-Annee){
this.annee=annee;
}
公共双getCreditOuvert(){
返回creditOuvert;
}
公共无效设置creditOuvert(双creditOuvert){
this.creditOuvert=creditOuvert;
}
公共双getModification(){
退货修改;
}
公共无效设置修改(双重修改){
这个。修改=修改;
}
公共双getCreditReporte(){
返回信用报告;
}
公共无效setCreditReporte(双重creditReporte){
this.creditReporte=creditReporte;
}
}
这是我的页面截图,这样你就可以理解我在说什么了
你需要一个例子,你能解释一下什么是转换器,我会如何在我的案例中使用它吗?我是JSF新手,我不太了解@kolossus的所有特性
package controller;
@Component
@Scope("view")
public class BudgetisationBean implements java.io.Serializable{
@Autowired
private BudgetisationMetier budgetisationMetier;
@Autowired
private RubriqueMetier rubriqueMetier;
private List<Object> listeBudgets;
private List<Annee> listeAnnees;
private List<Object> listeRubriques;
private Budgetisation budget;
private BudgetisationId id;
private Rubrique rubrique;
private Annee annee;
private Double creditOuvert;
private Double modification;
private Double creditReporte;
@PostConstruct
public void init() {
listeAnnees = budgetisationMetier.getListeAnnee();
listeRubriques = budgetisationMetier.getAllRubriquesNonBudgets();
}
public List<Object> getListeRubriques() {
return listeRubriques;
}
public void setListeRubriques(List<Object> listeRubriques) {
this.listeRubriques = listeRubriques;
}
public RubriqueMetier getRubriqueMetier() {
return rubriqueMetier;
}
public void setRubriqueMetier(RubriqueMetier rubriqueMetier) {
this.rubriqueMetier = rubriqueMetier;
}
public List<Annee> getListeAnnees() {
return listeAnnees;
}
public void setListeAnnees(List<Annee> listeAnnees) {
this.listeAnnees = listeAnnees;
}
public List<Object> getListeBudgets() {
int a = AnneeBean.submit();
System.out.println(a);
listeBudgets = budgetisationMetier.getAllBudgets(a);
return listeBudgets;
}
public void update()
{
Budgetisation budget = budgetisationMetier.getBudget(this.id);
budgetisationMetier.update(budget);
}
public void delete()
{
BudgetisationId bu = new BudgetisationId(getBudget().getRubrique().getIdRubrique(),getBudget().getAnnee().getAnnee());
Budgetisation b = budgetisationMetier.getBudget(bu);
budgetisationMetier.delete(getBudget().getId());
listeBudgets.remove(budget);
budget = null;
}
public BudgetisationMetier getBudgetisationMetier() {
return budgetisationMetier;
}
public void setBudgetisationMetier(BudgetisationMetier budgetisationMetier) {
this.budgetisationMetier = budgetisationMetier;
}
public BudgetisationId getId() {
return id;
}
public void setId(BudgetisationId id) {
this.id = id;
}
public Rubrique getRubrique() {
return rubrique;
}
public void setRubrique(Rubrique rubrique) {
this.rubrique = rubrique;
}
public Annee getAnnee() {
return annee;
}
public void setAnnee(Annee annee) {
this.annee = annee;
}
public Double getCreditOuvert() {
return creditOuvert;
}
public void setCreditOuvert(Double creditOuvert) {
this.creditOuvert = creditOuvert;
}
public Double getModification() {
return modification;
}
public void setModification(Double modification) {
this.modification = modification;
}
public Double getCreditReporte() {
return creditReporte;
}
public void setCreditReporte(Double creditReporte) {
this.creditReporte = creditReporte;
}
}