【问题标题】:Getting a value of a field from another ejb从另一个 ejb 获取字段的值
【发布时间】:2015-11-18 21:51:09
【问题描述】:

我想在另一个 ejb 中获取字段的值 这是我的示例,我想从类 (Visite) 中获取“CL​​ient”的值,然后在类 (DateVisite) 中的“ClientVisite”中获取它,而不是将这个值保存在数据库中。

这是我的代码

package model.entitie;

import java.io.Serializable;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.ColumnResult;
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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import model.entitie.Visite;

@Entity
@NamedQueries({ @NamedQuery(name = "Datevisite.findAll", query = "select o from Datevisite o") })
@SequenceGenerator(name = "DateVisite_Id_Seq_Gen", sequenceName = "DATEVISITE_SEQ", allocationSize = 1,
                   initialValue = 50)
public class Datevisite implements Serializable {
    private static final long serialVersionUID = -341535626783197699L;
    @Id
    @Column(nullable = false, length = 4000)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DateVisite_Id_Seq_Gen")
    private String iddatevis;
    @Temporal(TemporalType.DATE)
    private Date jourvisite;

    @ManyToOne
    @JoinColumn(name = "VISITE_ID")
    private Visite datevisite;
    @Temporal(TemporalType.DATE)
    @Column(name = "JOURVISITEEND")
    private Date jourvisteend;
    @Column(name = "DESCRPTION")
    private String description;
    @Column(name = "CLIENTVISITE")
    private String ClientVisite;


    public void setClientVisite(String ClientVisite) {

        this.ClientVisite = ClientVisite;

    }

    public String getClientVisite() {
        return ClientVisite;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setJourvisteend(Date jourvisteend) {
        this.jourvisteend = this.jourvisite;
    }

    public Date getJourvisteend() {
        return jourvisteend;
    }

    public Datevisite() {
    }

    public Datevisite(String iddatevis, Date jourvisite, Visite datevisite, String ClientVisite) {
        this.iddatevis = iddatevis;
        this.jourvisite = jourvisite;
        this.datevisite = datevisite;

        this.ClientVisite = ClientVisite;

    }

    public String getIddatevis() {
        return iddatevis;
    }

    public void setIddatevis(String iddatevis) {
        this.iddatevis = iddatevis;
    }

    public Date getJourvisite() {
        return jourvisite;
    }

    public void setJourvisite(Date jourvisite) {
        this.jourvisite = jourvisite;
    }


    public Visite getDatevisite() {
        return datevisite;
    }

    public void setDatevisite(Visite datevisite) {
        this.datevisite = datevisite;
    }
}

访问类

 package model.entitie;

    import java.io.Serializable;

    import java.util.List;

    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.OneToMany;
    import javax.persistence.SequenceGenerator;

    @Entity
    @NamedQueries({ @NamedQuery(name = "Visite.findAll", query = "select o from Visite o") })
    @SequenceGenerator(name = "Visite_Id_Seq_Gen", sequenceName = "VISITE_SEQ", allocationSize = 1, initialValue = 50)
    public class Visite implements Serializable {
        private static final long serialVersionUID = 2402539910369717472L;
        @Column(length = 4000)
        public String client;
        @Column(length = 4000)
        private String dep;
        @Id
        @Column(nullable = false, length = 4000)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Visite_Id_Seq_Gen")
        private String idvisite;
        @Column(length = 4000)
        private String nbvisites;
        @OneToMany(mappedBy = "datevisite", cascade = { CascadeType.PERSIST, CascadeType.MERGE })
        private List<Datevisite> datevisiteList;

        public Visite() {
        }

        public Visite(String client, String dep, String idvisite, String nbvisites) {
            this.client = client;
            this.dep = dep;
            this.idvisite = idvisite;
            this.nbvisites = nbvisites;
        }

        public String getClient() {
            return client;
        }

        public void setClient(String client) {

            this.client = client;
        }

        public String getDep() {
            return dep;
        }

        public void setDep(String dep) {
            this.dep = dep;
        }

        public String getIdvisite() {
            return idvisite;
        }

        public void setIdvisite(String idvisite) {
            this.idvisite = idvisite;
        }

        public String getNbvisites() {
            return nbvisites;
        }

        public void setNbvisites(String nbvisites) {
            this.nbvisites = nbvisites;
        }

        public List<Datevisite> getDatevisiteList() {
            return datevisiteList;
        }

        public void setDatevisiteList(List<Datevisite> datevisiteList) {
            this.datevisiteList = datevisiteList;
        }

        public Datevisite addDatevisite(Datevisite datevisite) {
            getDatevisiteList().add(datevisite);
            datevisite.setDatevisite(this);
            return datevisite;
        }

        public Datevisite removeDatevisite(Datevisite datevisite) {
            getDatevisiteList().remove(datevisite);
            datevisite.setDatevisite(null);
            return datevisite;
        }
    }

这就是我坚持的方式

    public Datevisite persistDatevisite(Datevisite datevisite) {
    datevisite.setJourvisteend(datevisite.getJourvisite());

    em.persist(datevisite);
    return datevisite;
}

【问题讨论】:

  • 您的意思是另一个“实体”而不是“EJB”,对吧? EJB 是服务/会话 bean。只是为了澄清。除此之外,你尝试了什么?你的问题在哪里?
  • 是的,我的意思是我试过 public void setClientVisite(String ClientVisite,Visite visite) { this.ClientVisite = visite.getClient(); },什么也没发生
  • 除了您有 2 个参数但只使用一个这一事实之外,如果附加了实体,它应该可以工作。设置硬编码字符串时是否有效?必须在同一个地方,否则它可以在一个地方连接并在另一个地方分离。
  • 那只是一个字符串,为什么附加和分离的对象在这里有效果? ... @user3419507 t'arrives à expliquer en français, ce sera plus simple ?
  • 从你的问题来看,很不清楚你在做什么以及出了什么问题。当您在em.persist(datevisite) 之前放置断点时,是否将 datevisite.ClientVisite 设置为所需的值?如果没有,您的代码有问题,而 JPA 没有问题。

标签: java jpa ejb entitymanager


【解决方案1】:

如果我理解正确,您需要从 Visite 类 (visite.getClient()) 获取客户端字段并将其设置在 DateVisite 类 (datevisite.setClientVisite()) 的 clientVisite 字段中,对吧?

您的 DateVisite 类已经有一个成员访问者,下面的代码应该适合您:

datevisite.setClientVisite(datevisite.getDateVisite().getClient());

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2023-04-05
    • 2020-06-07
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多