grails 中的枚举 - 将枚举值持久化到域 类

enums in grails - persisting enum values to domain classes

我在 /src/groovy/ 下创建了枚举 class UserType 为:

public enum UserType {
    USER(1),
    DEVSADMIN(2),
    RESTAURANTADMIN(3)
}

我的域 class "User" 就像:

class User {
    String  firstName
    String  lastName
    String  emailAddress
    String  contactNumber
    String  password
    String  image
    Date    dateOfBirth

    UserType userType

我的域 class 仍然具有 user_type 字符串类型的字段,而不是 enum.Also 我想知道,我如何为域 class USER 保留数据哪个 user_type 是枚举?

正在寻找包含枚举 groovy class、域 class、控制器和服务的简短示例。

我找到了解决我的问题的方法: 我在 path 创建了一个枚举 class "UserType" : src/groovy/

Enum Class UserType 看起来像:

public enum UserType {
USER('user'),
DEVSADMIN('devsAdmin'),
RESTAURANTADMIN('restaurantAdmin')
String id

UserType(String id){
    this.id = id
 }
}

域 class "User" 我在其中使用上面的枚举 class 作为:

class User {
String  firstName
String  lastName
String  emailAddress
String  contactNumber
String  password
String  image
Date    dateOfBirth

UserType userType
static constraints = {
    userType blank : false
  }
 }

控制器中的枚举处理:

class AuthenticationController {

def authenticationService

def userRegistration(){
    Date date = Date.parse("yyyy-MM-dd","1991-01-08")
    authenticationService.userSignUp(   "Abhinandan", "Satpute", abhinandan.satpute@gmail.com", "8796105046", "123", "abc_image",
            date, UserType.RESTAURANTADMIN)
 }
}

使用服务持久化枚举值:

class AuthenticationService {

def userSignUp(String firstName, String lastName, String emailAddress, String contactNumber, String password, String image,
               Date dateOfBirth, Enum userType){

    User user   =   new User("firstName" : firstName, "lastName" : lastName, "emailAddress" : emailAddress, "contactNumber" :contactNumber,
            "password" : password, "image" : image, "dateOfBirth" : dateOfBirth, "userType" : userType)
    user.save(flush: true)
 }
}

最后,table "User" 的架构如下所示: 在这个 table "user_type" 中是在域 class 中存储为 VARCHAR 的枚举字段。 向用户 table 插入记录后: