gpt4 book ai didi

java - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 'field list' 中的未知列

转载 作者:行者123 更新时间:2023-11-30 21:36:41 25 4
gpt4 key购买 nike

请帮忙。我是 hibernate 5 + MySQL 的新手,所以这可能是个愚蠢的场景。

我正在尝试创建一个非常基本的社交媒体应用程序,允许注册、登录和添加 friend 。我收到此错误:

23:47:57.340 [http-nio-8080-exec-6] ERROR     org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unknown column 'friends0_.User_Id' in 'field list'
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1423)
at com.alonso.socialnetworks.dao.UserDAO.getUserByName(UserDAO.java:29)
at com.alonso.socialnetworks.action.LoginAction.validate(LoginAction.java:34)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:250)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:262)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137)

当我尝试创建一个表来处理添加 friend 功能时抛出错误。

我继续创建了将用户与其 friend 相关联的表,如下所示:

表名:users_users

列:

users_id - int(11)

friends_id - int(11)

这是我的模型类:

package com.alonso.socialnetworks.model;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "Users")
public class User {

@Id
@GenericGenerator(name = "inc", strategy = "increment")
@GeneratedValue(generator = "inc")
@Column(name = "Id")
private Integer id;

@Column(name = "name")
private String userName;

@Column(name = "password")
private String password;

@OneToMany(fetch=FetchType.EAGER)
@JoinTable(name="users_users")
@JoinColumn(name="users_id")
private Set<User> friends;

public Set<User> getFriends() {
return friends;
}

public void setFriends(Set<User> friends) {
this.friends = friends;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

这是我正在使用的代码。

https://github.com/JAlonsoHdz/SocialNetworkWebApp

我做错了什么?看起来 hibernate 没有映射 users_users 和列。

最佳答案

我将实体映射更改为 this approach

这是我的代码在用户模型类上的样子:

@Entity
@Table(name = "Users")
public class User {

@Id
@GenericGenerator(name = "inc", strategy = "increment")
@GeneratedValue(generator = "inc")
@Column(name = "Id")
private Integer id;

@Column(name = "name")
private String userName;

@Column(name = "password")
private String password;

@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="users_users",
joinColumns=@JoinColumn(name="users_Id"),
inverseJoinColumns=@JoinColumn(name="friends_id")
)
private Set<User> friends;

@ManyToMany
@JoinTable(name="users_users",
joinColumns=@JoinColumn(name="friends_id"),
inverseJoinColumns=@JoinColumn(name="users_Id")
)
private Set<User> friendOf;

最后,当用户试图添加一个不存在的 friend 时,我不得不处理一个空指针异常。这就是诀窍。

关于java - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 'field list' 中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587759/

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