grails - 用于存储用户国家/地区,年龄段等的域设计

标签 grails gorm grails-domain-class

情况如下:一个用户表包含与其他用户的数据重叠的数据,例如国家/地区,年龄段,性别等。

在MySQL中,我将使用三个或两个表。在存储国家的情况下,我将使用三个表:一个是用户表,另一个是国家表,最后一个将这两个表连接在一起。 (如果一个用户有一个国家,我当然可以使用两个表。)

ex)用户(id,otherUserInfo),
userCountry(id_user,id_country),
country(id,countryName)


作为Grails的新手,我想知道代表这种模式的最佳方法是什么。是否需要创建2-3个域类?还是有一些神奇的功能(就像许多其他Grails功能(:)一样)可以在单个域类中完成。

最佳答案

您很有可能用两个来做到。

class User {
    //other user info

    //if user only has one country
    Country country

    //if user has many countries
    static hasMany = [countries: Country]
}

class Country {
    //country info
}

由于您可能不希望Country属于User,因此在Country类中不需要任何内容​​来指示与User的联系。在这两种情况下,Grails / Gorm都将处理创建链接实体的过程。

如果用户有多个国家/地区,并且您需要存储有关该关系的其他信息,则需要创建自己的联接表。例如,如果您需要保持用户对该国的访问次数,请执行以下操作:
class User {
     //other user info

    static hasMany = [userCountries: UserCountry]
}

class UserCountry {
    static belongsTo = [user: User]
    Country country
    int numberOfVisits
}

class Country {
    //country info
}

关于grails - 用于存储用户国家/地区,年龄段等的域设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13942169/

相关文章:

grails - 如何通过Geb和Spock通过Grails测试? (使用grails功能测试开发)

spring - Grails GSP标签字段值格式

grails - 使用g:select with service中的查询的Grails

grails - 获取行时验证失败

grails - 如何更改 Grails 域类 ID 字段的名称?

unit-testing - Grails 单元测试 Buggy 动态查找器

grails - 我可以确定何时添加域类吗?

grails - 跨多个域类的Grails过滤和排序

grails - 如何解决 Grails Error Repeated column in mapping for entity?在现有的 Postgresql 数据库上

javascript - Grails 使用 d3.js 加载大 csv 文件时出错