Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 春季数据JPA赢得';t手柄组<;Enum>;正确地_Spring_Hibernate_Spring Boot_Jpa_Spring Data Jpa - Fatal编程技术网

Spring 春季数据JPA赢得';t手柄组<;Enum>;正确地

Spring 春季数据JPA赢得';t手柄组<;Enum>;正确地,spring,hibernate,spring-boot,jpa,spring-data-jpa,Spring,Hibernate,Spring Boot,Jpa,Spring Data Jpa,我正在试用Spring Boot(最新版本,使用Hibernate 4.3.7),但我的用户实体有问题。这里是(最重要的部分): 问题是,当我向角色集添加一些角色时,Hibernate不会保存它。它将创建引用表,但只将数据插入User表 我试图解决这个问题,所以我创建了纯Java+Hibernate项目,并将User类复制到其中。你猜怎么着?成功了 有趣的事实是,当我在第二个项目中使用纯Hibernate时,创建的角色表看起来与在Spring Boot项目中创建的表不同 在我的cleanHibe

我正在试用Spring Boot(最新版本,使用Hibernate 4.3.7),但我的
用户
实体有问题。这里是(最重要的部分):

问题是,当我向
角色集添加一些
角色时,Hibernate不会保存它。它将创建引用表,但只将数据插入
User

我试图解决这个问题,所以我创建了纯
Java
+
Hibernate
项目,并将
User
类复制到其中。你猜怎么着?成功了

有趣的事实是,当我在第二个项目中使用纯
Hibernate
时,创建的
角色
表看起来与在
Spring Boot
项目中创建的表不同

在我的clean
Hibernate
项目中,我有如下表格:

User_roles:
   User_Id bigInt(20)
   roles int(11)
在使用SpringJPA时,我得到了

user_roles (notice lower case)
   User (no "_id" part)
   roles

发生什么事了?我做错了什么?它与
Spring Boot
配置有关吗?谢谢。

以下表格应与您现有的表格相匹配

@Entity
@Table("usr")
public class User {

    public static enum Role {
        UNVERIFIED, BLOCKED, ADMIN
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ElementCollection 
    @CollectionTable(name = "User_roles", joinColumns = @JoinColumn(name = "User_Id")
    private Set<Role> roles = new HashSet<Role>();

    (rest of properties, getters and setters etc)
}
@实体
@表(“usr”)
公共类用户{
公共静态枚举角色{
未验证、阻止、管理
}
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@元素集合
@CollectionTable(name=“User\u roles”,joinColumns=@JoinColumn(name=“User\u Id”)
私有集角色=新HashSet();
(其余属性、getter和setter等)
}

谢谢您的输入,但我的问题不是匹配现有表,而是不同的行为或纯hibernate与Spring数据JPA+保存相关的枚举集
@Column
似乎是错误的。请尝试删除它。还可以尝试将该枚举移动到其自己的文件中。可以通过设置
Spring.JPA.hibernate.naming_strategy=或更改命名策略g、 hibernate.cfg.EJB3NamingStrategy
user_roles (notice lower case)
   User (no "_id" part)
   roles
@Entity
@Table("usr")
public class User {

    public static enum Role {
        UNVERIFIED, BLOCKED, ADMIN
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ElementCollection 
    @CollectionTable(name = "User_roles", joinColumns = @JoinColumn(name = "User_Id")
    private Set<Role> roles = new HashSet<Role>();

    (rest of properties, getters and setters etc)
}