gpt4 book ai didi

java.sql.BatchUpdateException : Cannot add or update a child row: a foreign key constraint fails ERROR

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:15 25 4
gpt4 key购买 nike

我已经解决这个问题两周了,我在 Stackoverflow 和其他论坛上遇到了几种解决方案,但我仍然无法找到正确的答案。

我的数据库中有 3 个表:UsersUserGroupsGroups

用户UserGroups具有一对多关系,并且UserGroups用户多对一

GroupsUserGroups的关系与Users相同。

我正在使用 JSF + Hibernate + PrimeFaces 来构建我的应用程序。因此,我的 View 中有 3 个数据表 - 1 个显示数据库中的用户列表,另一个显示组列表,最后一个 UserGroup 数据表显示用户和组列表。

所以这个错误

java.sql.BatchUpdateException: Cannot add or update a child row: a foreign key constraint fails

当我选择用户和组并单击“插入”按钮时出现。用户和组不会插入到数据库表中。

我不认为这是一个映射错误,因为我尝试通过手动将值插入数据库来运行测试类,并且它工作正常。谁能帮我解决这个问题吗?

用户模型:

    @OneToMany(mappedBy="user", targetEntity=UsuariosGrupos.class,fetch= FetchType.EAGER,cascade= CascadeType.ALL)
private List<UsuariosGrupos> usuariosgruposList;

public Usuarios() {
}


@XmlTransient
public List<UsuariosGrupos> getUsuariosgruposList() {
return usuariosgruposList;
}

public void setUsuariosgruposList(List<UsuariosGrupos> usuariosgruposList) {
this.usuariosgruposList = usuariosgruposList;
}

@Override
public int hashCode() {
int hash = 0;
hash += (idUsuario != null ? idUsuario.hashCode() : 0);
return hash;
}



@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Usuarios)) {
return false;
}
Usuarios other = (Usuarios) object;
if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
return false;
}
return true;
}

@Override
public String toString() {
return "br.model.Usuarios[ idUsuario=" + idUsuario + " ]";
}

}

用户组模型:

@Entity
@Table(name = "usuarios_grupos")
public class UsuariosGrupos {

private Integer id_usuario;
private Integer id_grupo;

private Usuarios user;

@ManyToOne
@JoinColumn(name="id_usuario", insertable=false, updatable=false)
public Usuarios getUser() {
return user;
}

public void setUser(Usuarios user) {
this.user = user;
}

@Id
@GeneratedValue
public Integer getId_grupo() {
return id_grupo;
}

public void setId_grupo(Integer id_grupo) {
this.id_grupo = id_grupo;
}

public Integer getId_usuario() {
return id_usuario;
}

public void setId_usuario(Integer id_usuario) {
this.id_usuario = id_usuario;
}
}

组模型:

    @Entity
@Table(name="grupos")

public class Grupos {
private long id_grupo;
private String descricao;

private List<UsuariosGrupos> usergroup;

@OneToMany(mappedBy = "group", targetEntity = UsuariosGrupos.class, fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
public List<UsuariosGrupos> getUsergroup() {
return usergroup;
}

public void setUsergroup(List<UsuariosGrupos> usergroup) {
this.usergroup = usergroup;
}

@Id
@GeneratedValue
public String getDescricao() {
return descricao;
}

public void setDescricao(String descricao) {
this.descricao = descricao;
}

public long getId_grupo() {
return id_grupo;
}

public void setId_grupo(long id_grupo) {
this.id_grupo = id_grupo;
}
}
`

Index.xhtml (view) :

<h:commandButton value="Incluir" actionListener="#{usuariosGruposBean.finishAddUsuariosGrupos}">
<f:param name="#{usergroups}" value="#{usergroups}"/>
</h:commandButton>

我的用户组 Bean:

   @ManagedBean
@SessionScoped
public class UsuariosGruposBean {

private Usuarios user;
private UsuariosGrupos userGroups = new UsuariosGrupos();
private UsuariosGruposDAO userDAO = new UsuariosGruposDAO();
private UsuariosGruposDAO grpDAO = new UsuariosGruposDAO();
private UsuariosGruposDAO userGrpDAO = new UsuariosGruposDAO();
private List<Usuarios> listOfUsuarios;

private List<UsuariosGrupos> listOfUserGroups;

public List<Usuarios> getListOfUsuarios() {
List<Usuarios> usuariosList = userDAO.retrieveUsuarios();
listOfUsuarios = usuariosList;
return listOfUsuarios;
}



public List<UsuariosGrupos> getListofUserGroups() {
List<UsuariosGrupos> userGrpList = userGrpDAO.retrieveUsuariosGrupos();
listOfUserGroups = userGrpList;
return listOfUserGroups;
}




public Usuarios getUser() {
return user;
}

public void setUser(Usuarios user) {
this.user = user;
}

public UsuariosGrupos getUserGroups() {
return userGroups;
}

public void setUserGroups(UsuariosGrupos userGroups) {
this.userGroups = userGroups;
}


public void finishAddUsuariosGrupos() {
userGroups.setId_usuario(62);
userGroups.setId_grupo(2);
userGrpDAO.saveUsuariosGrupos(userGroups);
listOfUserGroups = null;
}



}




This is the error stack that I face when I attempt to add a user and a group to usergroups:

Out 21, 2011 10:15:26 AM org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: Not binding factory to JNDI, no JNDI name configured Out 21, 2011 10:15:33 AM org.hibernate.util.JDBCExceptionReporter logExceptions WARNING: SQL Error: 1452, SQLState: 23000 Out 21, 2011 10:15:33 AM org.hibernate.util.JDBCExceptionReporter logExceptions SEVERE: Cannot
add or update a child row: a foreign key constraint fails
(
social.usuarios_grupos, CONSTRAINTfk_usuariosFOREIGN KEY
(
id_usuario) REFERENCESusuarios(id_usuario) ON DELETE NO
ACTION ON UPDATE NO ACTION) Out 21, 2011 10:15:33 AM
org.hibernate.event.def.AbstractFlushingEventListener performExecutions SEVERE: Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141) at java.lang.Thread.run(Thread.java:722) Caused by: java.sql.BatchUpdateException: Cannot add or update a child row: a foreign key constraint fails (social.usuarios_grupos, CONSTRAINT fk_usuarios FOREIGN KEY (id_usuario) REFERENCES usuarios (id_usuario) ON DELETE NO ACTION ON UPDATE NO ACTION)

最佳答案

通过 show_sql=true 查看底层生成的查询,

问题是您正在尝试插入/更新不存在的引用。

关于java.sql.BatchUpdateException : Cannot add or update a child row: a foreign key constraint fails ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7849338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com