1
AdGroupInterfaces 목록을 관리하는 클래스 캠페인이 있습니다. 구현추상 클래스 또는 인터페이스를 인스턴스화 할 수 없습니다. 지속되는 동안의 문제
@Entity
@Table(name = "campaigns")
public class Campaign implements Serializable,Comparable<Object>,CampaignInterface {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany (
cascade = {CascadeType.ALL},
fetch = FetchType.EAGER,
targetEntity=AdGroupInterface.class
)
@org.hibernate.annotations.Cascade(
value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN
)
@org.hibernate.annotations.IndexColumn(name = "CHOICE_POSITION")
private List<AdGroupInterface> AdGroup;
public Campaign() {
super();
}
public List<AdGroupInterface> getAdGroup() {
return AdGroup;
}
public void setAdGroup(List<AdGroupInterface> adGroup) {
AdGroup = adGroup;
}
public void set1AdGroup(AdGroupInterface adGroup) {
if(AdGroup==null)
AdGroup=new LinkedList<AdGroupInterface>();
AdGroup.add(adGroup);
}
}
AdGroupInterface의 구현이 광고 그룹 인을 지속 할 예정 임. 캠페인의 광고 그룹을 목록에 추가하면
캠페인 c; . c.getAdGroupList() 추가 (새 광고 그룹을()) 등 및 캠페인
에게 저장은 "추상 클래스 또는 인터페이스의 인스턴스를 할 수 없습니다"라는 AdGroupInterface
는 그냥 지속하기 전에 구현을 인식하지합니다. ..
반면에 광고 그룹을 별도로 유지합니다. 다른 엔티티의 구성원 인 경우 지속되지 않습니다.
import java.io.Serializable;
import java.util.List;
import javax.persistence.*;
@Entity
@DiscriminatorValue("1")
@Table(name = "AdGroups")
public class AdGroups implements Serializable,Comparable,AdGroupInterface{
/**
*
*/
private static final long serialVersionUID = 1L;
private Long Id;
private String Name;
private CampaignInterface Campaign;
private MonetaryValue DefaultBid;
public AdGroups(){
super();
}
public AdGroups(String name, CampaignInterface campaign) {
super();
this.Campaign=new Campaign();
Name = name;
this.Campaign = campaign;
DefaultBid = defaultBid;
AdList=adList;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="AdGroup_Id")
public Long getId() {
return Id;
}
public void setId(Long id) {
Id = id;
}
@Column(name="AdGroup_Name")
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
@ManyToOne
@JoinColumn (name="Cam_ID", nullable = true,insertable = false)
public CampaignInterface getCampaign() {
return Campaign;
}
public void setCampaign(CampaignInterface campaign) {
this.Campaign = campaign;
}
}
내가 무엇을 놓치고? 그것으로 들여다주세요 ...
답장을 보내 주셔서 감사합니다 :) getHibernateTemplate.save (광고 그룹)라고 말하면 지속됩니다. (인터페이스였던) 하지만 adgroup이 클래스 멤버 인 save (campaign) doesnt 작업은 ... campaigninterface_adgroupinterface 후에 세 번째 조인 테이블 campaign_adgroupinterface를 만듭니다. 즉 campaignInterface에서 캠페인을 인식하지만 광고 그룹이 아닙니다. 캠페인의 데이터 멤버 인 경우 문제가 있음을 의미합니다. 내 생각에 .......... – sammy
@sammy 구현 작업 여부 그렇지 않으면 뭔가를 변경해야합니다. –
오 예 그렇습니다. JPA는 이전 버전의 인터페이스를 지속시키지 않습니다. 새 버전을 사용하면 ... abstract 클래스가 옵션 인 것 같습니다. 아프지 않습니다. – sammy