I'm having problems with editing entity with @EmbeddedId. On page I've placed inputText element for every PK field, for example:
<h:inputText id="id_nr" value="#{uscModpskr.id.nr}" required="true"/>
I can see in inputText proper values fetched from database but when I click h:commandButton I'm getting 5 times Conversion error occurred message. My PK contains 5 fields: 2 strings, 2 ints, one char field.
@Stateful
@Name("marriageSearch")
@Scope(ScopeType.SESSION)
public class MarriageSearchingAction implements MarriageSearching, Serializable {
@In(required=false)
@Out(required=false)
private UscModpskr uscModpskr;
//[...]
}
// Generated 2006-06-04 20:38:58 by Hibernate Tools 3.1.0.beta5
@Entity
@Table(name = "usc_modpskr", uniqueConstraints = {})
@Name("uscModpskr")
public class UscModpskr implements java.io.Serializable {
// Fields
private UscId id;
private String dzpl;
//[...many other fields...]
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name = "idusc", column = @Column(name = "idusc", unique = false, nullable = false, insertable = true, updatable = true, length = 10)),
@AttributeOverride(name = "rk", column = @Column(name = "rk", unique = false, nullable = false, insertable = true, updatable = true)),
@AttributeOverride(name = "dz", column = @Column(name = "dz", unique = false, nullable = false, insertable = true, updatable = true, length = 20)),
@AttributeOverride(name = "nr", column = @Column(name = "nr", unique = false, nullable = false, insertable = true, updatable = true)),
@AttributeOverride(name = "nrp", column = @Column(name = "nrp", unique = false, nullable = false, insertable = true, updatable = true, length = 1)) })
public UscId getId() {
return this.id;
}
public void setId(UscId id) {
this.id = id;
}
}
@Embeddable
public class UscId implements java.io.Serializable {
private String idusc;
private int rk;
private String dz;
private int nr;
private char nrp;
//[...getters and setters...]
}
I've found solution, it works well if I change:
@In(required=false)
@Out(required=false)
private UscModpskr uscModpskr;
to:
@In(required=false)
@Out(required=false,scope=ScopeType.SESSION)
private UscModpskr uscModpskr;