在Java

时间:2016-09-08 18:33:29

标签: java jsf

尝试在foreignKey字段中设置默认值时出现问题。 我想在表区域中注册一个区域,用户将输入的唯一值是描述,生成id。    初始化页面时,我希望默认情况下设置实体区域“areaTotal”和“propId”的属性值,areaTotal我想要为false而propId我想成为我通过id搜索的值。 attrib“areaTotal”是boolean,我可以设置它,但propId类型是“Propriedade”(另一个实体),我必须将它的id保存在数据库中。我怎么能这样做?

视图:

//I am setting the values in this method "obterPropriedade".

    <f:metadata>
        <f:event listener="#{gadoBean.obterPropriedade}"
                    type="preRenderView" />
    </f:metadata>



 <p:outputLabel value="Descrição" for="descricao" />
                    <p:inputText id="descricao" size="10" maxlength="80"
                        value="#{gadoBean.area.areaDescricao}" required="true" 
                                    requiredMessage="Por favor, informe a descricao da area"
                                     validatorMessage="formato de tipo inválido">
                    <f:validateRegex pattern="^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$"/>
                    </p:inputText>

            <p:commandButton action="#{gadoBean.salvarArea}" value="salvar area" update=":mapa,:growl,:panelMap"/>

Area.java(模型)

package com.sisRastrbov.model;


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.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@SequenceGenerator(name ="area_sequence", sequenceName = "area_sequence")
@Table(name = "area")
public class Area implements Serializable {
    private static final long serialVersionUID = 1L;

    private Long areaId;
    private String areaDescricao;
    private Propriedade propId;
    private boolean areaTotal;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "area_sequence")
    @Column(name = "area_id")
    public Long getAreaId() {
        return areaId;
    }

    public void setAreaId(Long areaId) {
        this.areaId = areaId;
    }
    @Column(name = "area_descricao")
    public String getAreaDescricao() {
        return areaDescricao;
    }
    public void setAreaDescricao(String areaDescricao) {
        this.areaDescricao = areaDescricao;
    }

    @ManyToOne
    @JoinColumn(name = "propi_id", nullable = false)
    public Propriedade getPropId() {
        return propId;
    }
    public void setPropId(Propriedade propId) {
        this.propId = propId;
    }

    @Column(name = "area_total")
    public boolean isAreaTotal() {
        return areaTotal;
    }

    public void setAreaTotal(boolean areaTotal) {
        this.areaTotal = areaTotal;
    }




}

我的托管豆:

    private static final long serialVersionUID = 1L;
    private MapModel mapa;
    private Circle circulo = null;
    private Tag tag;
    private float lastLat, lastLong;
    private Coordenadas coordenadas;
    private Coordenadas cooPorId;
    private Propriedade propriedade;
    private Tag tagId;
    private List<Cerca> cerca;
    private List<Coordenadas> cooPorPro;
    private List<Area> listArea;
    private List<Coordenadas> posicoes;
    private List<Tag> tagsCadastradas;
    private List<Coordenadas> ultimasPosicoes;
    private List<Propriedade> listPropriedades;
    private Gado gado;
    private Area area = new Area();
    private Cerca cerca1;
    private CoordFilter filtro;
    private List<Gado> gadosFiltrados;
    private String center;
    private LatLng coord;
    private GadoBeanM gadoBeanM = new GadoBeanM();
    private Long prop;
    private Long usuarioLogado;
    private Long id;
    private String idGado;
    private Seguranca seguranca;
    private double lat;
    private double lng;
    int cont = 0;
    double[] lati = new double[1000];
    double[] longi = new double[1000];
    LatLng coordi;
    private Polyline polyl = new Polyline();
    private Marker marcador;
    private double[] lats;
    private double[] longs;

//other methods.

public void salvarArea() {

        if (cont < 3) {

            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("A area deve ter pelo menos três pontos!"));

        } else {
            System.out.println("area: "+this.area);

            //here is the method I save, everything normal.
            this.area = areasRep.salvarArea(this.area);


            cont = 0;
            lati = null;
            longi = null;
            coordi = null;
            polyl = new Polyline();
            marcador = null;
        }

        limpar();



    }

//Method called before page is loaded.
public void obterPropriedade() {
        this.area = new Area();
        if(!isEditandoArea()){
            this.propriedade = propriedadesRep.porId(prop);//here I get the propriedade by id.
            this.area.setAreaTotal(false);//here I set areaTotal.

            this.area.setPropId(propriedade.getId());//Here is my PROBLEM!!!
            //how do I set this field with the id, if the type is an Entity?


            System.out.println("prop por id: "+this.propriedade);
            System.out.println("area: "+this.area);
            System.out.println("prop por id: "+this.area.isAreaTotal());
        }



        mapa = new DefaultMapModel();
    //other code.

0 个答案:

没有答案