当前位置: 首页 > 知识库问答 >
问题:

spring boot@ElementCollection:“field list”中的列“user_roles”未知

闾丘山
2023-03-14

我有一个简单的spring boot应用程序,我决定在那里添加spring安全和角色。下面是我的用户类:

//different fields

@ElementCollection(targetClass = UserRole.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
private Set<UserRole> userRoles;

userrole枚举:

public enum UserRole implements GrantedAuthority {
    USER, ADMIN;

    @Override
    public String getAuthority() {
        return name();
    }
}

我有两张桌子

用户:

| id | name | pasword |
----------------------
|    |      |         |

USER_ROLES:

| user_id |  user_role |
-----------------------
|         |            |

当我试图创建新用户时,我得到:

Unknown column 'user_roles' in 'field list'

我通过它也应该添加新的记录到user_roles。

共有1个答案

谢鸿羲
2023-03-14

尝试添加@column以指定userroles的列名,使其与user_roles集合表中列的名称匹配:

@ElementCollection(targetClass = UserRole.class, fetch = FetchType.EAGER)
@CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
@Column(name = "user_role")
private Set<UserRole> userRoles;

错误中显示的user_roles名称可能是Hibernate在未指定@column时根据默认命名策略尝试查找的默认列名。

 类似资料:
  • 我遇到了一个问题,在我的JPA表中没有任何内容被持久化。据我所知,我想我理解了的基本思想。我猜出现问题的原因是,我在一个可嵌入的对象中有一个。 一个简单的例子: 有什么线索表明可能出了什么问题吗? 为了简洁起见,我将尽量使附加信息尽可能简短。 创建计算原因 创建计算历史记录 调试信息在计算历史#创建 HibernateDAO仓库 Hibernate生成的SQL 看起来HiberNate甚至没有生成

  • 下面是我的Spring boot Rest API应用程序。 vendor.java vendorRepository.java 不过,我还是得到了一个错误: 这个错误是什么?如何化解?

  • 问题内容: 有谁知道是否以及如何使用hibernate条件API编写以下问题的解决方案(由JPAAPI编写)? 更具体地说,我有一个讨论实体,其中包含参与者列表(这是用户名列表): 现在,我需要检索给定用户名是参与者的所有讨论。 如果我要为参与者创建一个实体,这将很简单: 但是我无法使用非实体创建别名… 问题答案: 正如解释在这里我想要的东西是不可能的: 使用ElementCollection而不

  • 问题内容: 我正在使用Flask构建网站,在其中使用WTForms。在表单中,我现在要使用FormFields的FieldList,如下所示: 因此,为了使人们能够进入具有两个地点的公司(稍后会动态添加地点),我在正面进行了此操作: 所以在提交时,我打印位置: 但我明白了 我可以使用locationForm打印第一个位置的值(请参见下文),但是我仍然不知道如何获取第二个位置的数据。 因此,位置列表

  • 我正在使用下面的JSON由我的springboot代码解析: 但在对其进行解析/反序列化时,我在Student的对象中得到了以下信息: RESTController: 学生豆类: 命名Bean类:

  • 我正在制作一个我想登录和注册的应用程序,并且能够将csv文件导入数据库,注册和登录工作正常,但是当我想导入csv时,我遇到了这个问题: 错误luminate\Database\QueryException SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“classe”(SQL:select*fromwhere(=7和=7598)限制1)科目表 账户控制员