您好我的关系抛出@EmbeddedId会抛出IdIdentifierGenerationException:null id。欢迎任何建议。这是我的代码:
TABLE ACTIVIDADES(
CODIGO CHAR(10) NOT NULL UNIQUE,
NOMBRE VARCHAR(50) UNIQUE,
PRIMARY KEY(CODIGO)
)ENGINE=INNODB;
CREATE TABLE EVENTOS_ACTIVIDADES(
ID INT AUTO_INCREMENT,
CODIGO_ACTIVIDADES CHAR(10) NOT NULL UNIQUE,
PRIMARY KEY(ID,CODIGO_ACTIVIDADES),
FOREIGN KEY(CODIGO_ACTIVIDADES) REFERENCES ACTIVIDADES(CODIGO) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE=INNODB;
以下是我的JPA实体:
@Entity
@Table(name = "eventos_actividades", catalog = "capacitacion_csg", uniqueConstraints = @UniqueConstraint(columnNames = "CODIGO_ACTIVIDADES"))
public class EventosActividades implements java.io.Serializable {
private EventosActividadesId id;
private Actividades actividades;
public EventosActividades() {
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "id", column = @Column(name = "ID", nullable = false)),
@AttributeOverride(name = "codigoActividades", column = @Column(name = "CODIGO_ACTIVIDADES", unique = true, nullable = false, length = 10)) })
public EventosActividadesId getId() {
return this.id;
}
public void setId(EventosActividadesId id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CODIGO_ACTIVIDADES", unique = true, nullable = false, insertable = false, updatable = false)
public Actividades getActividades() {
return this.actividades;
}
public void setActividades(Actividades actividades) {
this.actividades = actividades;
}
@Entity
@Table(name="ACTIVIDADES", catalog="CAPACITACION_CSG", uniqueConstraints = {@UniqueConstraint(columnNames="NOMBRE"), @UniqueConstraint(columnNames="CODIGO")})
public class Actividades {
private String codigo;
private String nombre;
private List<EventosActividades> eventosActividades;
@Column(name="NOMBRE",unique=true,nullable=false,length=50)
public String getNombre() {
return nombre;
}
@Id
@Column(name="CODIGO",unique=true,nullable=false,length=10)
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@OneToMany(fetch= FetchType.EAGER,mappedBy="actividades",cascade=CascadeType.ALL)
public List<EventosActividades> getEventosActividades() {
return eventosActividades;
}
public void setEventosActividades(List<EventosActividades> eventosActividades) {
this.eventosActividades = eventosActividades;
}
}
@Embeddable
public class EventosActividadesId implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String codigoActividades;
public EventosActividadesId() {
}
public EventosActividadesId(int id, String codigoActividades) {
this.id = id;
this.codigoActividades = codigoActividades;
}
@Column(name = "ID", nullable = false)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "CODIGO_ACTIVIDADES", unique = true, nullable = false, length = 10)
public String getCodigoActividades() {
return this.codigoActividades;
}
public void setCodigoActividades(String codigoActividades) {
this.codigoActividades = codigoActividades;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof EventosActividadesId))
return false;
EventosActividadesId castOther = (EventosActividadesId) other;
return (this.getId() == castOther.getId())
&& ((this.getCodigoActividades() == castOther
.getCodigoActividades()) || (this
.getCodigoActividades() != null
&& castOther.getCodigoActividades() != null && this
.getCodigoActividades().equals(
castOther.getCodigoActividades())));
}
public int hashCode() {
int result = 17;
result = 37 * result + this.getId();
result = 37
* result
+ (getCodigoActividades() == null ? 0 : this
.getCodigoActividades().hashCode());
return result;
}
}
答案 0 :(得分:0)
感谢所有人,我没有初始化我的@Embeddable EventosActividadesId类,并以这种方式设置在我的EventosActividades实体中:
EventosActividadesId id = new EventosActividadesId(); id.setCodigoActividades(&#34; ACTCBK&#34); eventosActividades.setId(ID);