【发布时间】:2015-11-18 21:51:09
【问题描述】:
我想在另一个 ejb 中获取字段的值 这是我的示例,我想从类 (Visite) 中获取“CLient”的值,然后在类 (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