0

我有一个域类 UserProfile,它与另一个域类 User 具有一对一的关系。提供了域的结构。

сlass UserProfile {
String fio
String position
String phone
String email

static belongsTo = [user: User]

static constraints = {
          // some constraints
}
static mapping = {
   //some mapping; user property is not mapped
}    

我需要在 Grails 中为 UserProfile 域编写本机 sql 查询,但我不知道如何引用用户属性(静态 belongsTo = [user: User])。我试过 USER_ID 但它不起作用。我不能直接使用映射部分命名列;我只需要找出 UserProfile 域中的用户列在数据库中是如何命名的,以及如何在本机 sql 查询中调用它。

4

2 回答 2

1

如果我收到您的问题,非常简单,用于在数据库中存储文件的 Grails gorm 约定是:

喜欢

    user_profile  for UserProfile -Domain

并且所有文件都由下划线分隔,并且大多数情况下,gorm 在外键引用/或 GORM 关系(如上面的一对一和一对多)之后添加 _id

   [belongsTo=[user]] .

SQL 表内部

    mysql describe user_profile ;

    ----------------------------------------------------------------
    User_Profile
    ----------------------------------------------------------------
    id
    version 
    foo           varchar(50)   
    postion
    email
    user_instance_id  int 
  -------------------------------------------------------------------

本机 SQL 查询将是:

   'select up.user_instance_id from user_profile as up '

通过查询用户表获取所有userInstance对象

   'select * from user where user.id = 'the id you get it from the above query'

我希望你对此有一些想法,如果我不明白,请告诉我。

于 2013-07-09T05:39:17.183 回答
-1

我相信如果您在 UserProfile 中定义用户,那么您可以访问它并自动映射?它适用于我以前的项目,我希望它适用于此。

сlass UserProfile {
String fio
String position
String phone
String email

static belongsTo = [user: User]

User userInstance;

static constraints = {
          // some constraints
}

然后你就可以使用它了

UserProfile.executeQuery("select up.userInstance from UserProfile up")
于 2013-07-09T00:19:18.170 回答