|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Mapping Question - OneToMany Create Table from Entity FailsI've got the following entity definitions (trimmed) below. When I try to generate Tables from Entities I get the error message;
Exception [EclipseLink-48] (Eclipse Persistence Services - 1.1.2.v20090612-r4475): org.eclipse.persistence.exceptions.DescriptorException Exception Description: Multiple writable mappings exist for the field [CCFParameter.id]. Only one may be defined as writable, all others must be specified read-only. Mapping: org.eclipse.persistence.mappings.OneToOneMapping[ccfgroup] Descriptor: RelationalDescriptor(com.blackbox.entities.db.CCFParameter --> [DatabaseTable(CCFParameter)]) What do I need to correct this and what does it actually mean? Regards @Entity @Table(name="CCFGroup") public class CCFGroup { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") private int id; //bi-directional many-to-one association to CCFParameter @OneToMany(mappedBy="ccfgroup",fetch=FetchType.LAZY, cascade={CascadeType.ALL}) private Set<CCFParameter> ccfParameters; public CCFGroup() { } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public Set<CCFParameter> getCcfParameters() { return this.ccfParameters; } public void setCcfParameters(Set<CCFParameter> ccfParameters) { this.ccfParameters = ccfParameters; } } @Entity @Table(name="CCFParameter") public class CCFParameter implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") private int id; @Column(name="description", nullable=false, length=128) private String description; @Column(name="idsDescription", nullable=false, length=128) private String idsDescription; @Column(name="parameterName", unique=true, nullable=false, length=64) private String parameterName; @ManyToOne (cascade=CascadeType.ALL) @JoinColumn(name="id") private CCFGroup ccfgroup; @Version @Column(name="version", nullable=false) private long version; @Column(name="display", nullable=false, length=1) private String display; public CCFParameter() { } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public CCFGroup getCCFGroup() { return ccfgroup; } public void setCCFGroup(CCFGroup ccfgroup) { this.ccfgroup = ccfgroup; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } public String getIdsDescription() { return this.idsDescription; } public void setIdsDescription(String idsDescription) { this.idsDescription = idsDescription; } public String getParameterName() { return this.parameterName; } public void setParameterName(String parameterName) { this.parameterName = parameterName; } public long getVersion() { return this.version; } public void setVersion(long version) { this.version = version; } public String getDisplay() { return display; } public void setDisplay(String display) { this.display = display; } |
|
|
Re: Mapping Question - OneToMany Create Table from Entity FailsHello,
As the error states, the CCFParameter.id database field is mapped twice. Notice that CCFParameter's id and ccfgroup both use the "id" field - one of them will need to be set as insertable=false updateable=false. Best Regards, Chris RogerV wrote: > I've got the following entity definitions (trimmed) below. When I try to > generate Tables from Entities I get the error message; > > Exception [EclipseLink-48] (Eclipse Persistence Services - > 1.1.2.v20090612-r4475): > org.eclipse.persistence.exceptions.DescriptorException > Exception Description: Multiple writable mappings exist for the field > [CCFParameter.id]. Only one may be defined as writable, all others must be > specified read-only. > Mapping: org.eclipse.persistence.mappings.OneToOneMapping[ccfgroup] > Descriptor: RelationalDescriptor(com.blackbox.entities.db.CCFParameter --> > [DatabaseTable(CCFParameter)]) > > What do I need to correct this and what does it actually mean? > > Regards > > @Entity > @Table(name="CCFGroup") > public class CCFGroup { > > > @Id > @GeneratedValue(strategy=GenerationType.IDENTITY) > @Column(name="id") > private int id; > > > //bi-directional many-to-one association to CCFParameter > @OneToMany(mappedBy="ccfgroup",fetch=FetchType.LAZY, > cascade={CascadeType.ALL}) > private Set<CCFParameter> ccfParameters; > > public CCFGroup() { > } > > public int getId() { > return this.id; > } > > public void setId(int id) { > this.id = id; > } > > > public Set<CCFParameter> getCcfParameters() { > return this.ccfParameters; > } > > public void setCcfParameters(Set<CCFParameter> ccfParameters) { > this.ccfParameters = ccfParameters; > } > > } > > @Entity > @Table(name="CCFParameter") > public class CCFParameter implements Serializable { > private static final long serialVersionUID = 1L; > > @Id > @GeneratedValue(strategy=GenerationType.IDENTITY) > @Column(name="id") > private int id; > > @Column(name="description", nullable=false, length=128) > private String description; > > @Column(name="idsDescription", nullable=false, length=128) > private String idsDescription; > > @Column(name="parameterName", unique=true, nullable=false, length=64) > private String parameterName; > > > @ManyToOne (cascade=CascadeType.ALL) > @JoinColumn(name="id") > private CCFGroup ccfgroup; > > @Version > @Column(name="version", nullable=false) > private long version; > > @Column(name="display", nullable=false, length=1) > private String display; > > public CCFParameter() { > } > > public int getId() { > return this.id; > } > > public void setId(int id) { > this.id = id; > } > > public CCFGroup getCCFGroup() { > return ccfgroup; > } > > public void setCCFGroup(CCFGroup ccfgroup) { > this.ccfgroup = ccfgroup; > } > > public String getDescription() { > return this.description; > } > > public void setDescription(String description) { > this.description = description; > } > > public String getIdsDescription() { > return this.idsDescription; > } > > public void setIdsDescription(String idsDescription) { > this.idsDescription = idsDescription; > } > > public String getParameterName() { > return this.parameterName; > } > > public void setParameterName(String parameterName) { > this.parameterName = parameterName; > } > > public long getVersion() { > return this.version; > } > > public void setVersion(long version) { > this.version = version; > } > > public String getDisplay() { > return display; > } > public void setDisplay(String display) { > this.display = display; > } > > eclipselink-users mailing list eclipselink-users@... https://dev.eclipse.org/mailman/listinfo/eclipselink-users |
|
|
Re: Mapping Question - OneToMany Create Table from Entity Fails
Ah - well that's not what I wanted anyway :( @Entity @Table(name="CCFParameter") public class CCFParameter { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="id") private int id; @ManyToOne (cascade=CascadeType.ALL) @JoinColumn(name="id") private CCFGroup ccfgroup; I thought that the @JoinColumn(name="id") referred to the id column in the CCFGroup class/entity, not the id column in the Parameter class/entity. So it looks like I've missed the point in trying to create @OneToMany and @ManyToOne ..... again! Regards |
| Free embeddable forum powered by Nabble | Forum Help |