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

标签 grails enums gorm

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

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

我的网域类别“用户”如下所示:
class User {
    String  firstName
    String  lastName
    String  emailAddress
    String  contactNumber
    String  password
    String  image
    Date    dateOfBirth

    UserType userType

我的域类仍然具有未枚举字符串类型的user_type字段。我也想知道,如何为user_type为enum的域类USER持久保存数据?

寻找简短的示例,它将具有枚举groovy类,域类, Controller 和服务。

最佳答案

我找到了解决我的问题的方法:
我在路径下创建了一个枚举类“UserType”:src / groovy /

枚举类 UserType 看起来像:

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

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

我在上面的枚举类中使用的域类“User” :
class User {
String  firstName
String  lastName
String  emailAddress
String  contactNumber
String  password
String  image
Date    dateOfBirth

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

Controller 中的枚举处理:
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)
 }
}

最后,表“User”的模式如下所示:
在此表中,“user_type”是作为字段类别中的VARCHAR存储的枚举字段。
schema of table "User" looks like
将记录插入到用户表后:
after inserting record

关于grails - grails中的枚举-将枚举值持久化到域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246245/

相关文章:

ios - Tableviewcells 按分类进入特定的标题部分(iOS)

grails - 在Grails中,如何订购急切获取的域记录?

java - grails 中基于 NTLM 的 Web 服务身份验证

java - grails 应用程序中的 "Too many open files"- 如何正确关闭打开的文件和流?

grails - 如何将 Hibernate Session 绑定(bind)到 Grails 中的线程?

ios - 如何初始化此Swift枚举-甚至应该使用它?

Grails - 如何创建第二个公共(public)域 Controller

java - 枚举是否意味着静态类?

grails - 在grails中更新一个域对象的多个实例

hibernate - 如何在gorm-hibernate中使用hasMany属性保存域