Grails的;如何在本机sql查询中引用域属性

时间:2013-07-08 18:08:33

标签: sql grails mapping

我有一个域类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 for UserProfile域中编写本机sql查询,我不知道如何引用用户属性(static belongsTo = [user:User])。我试过了USER_ID,但它没有用。 我无法使用映射部分直接命名列;我只需要了解UserProfile域中的用户列如何在数据库中命名,以及如何在本机sql查询中调用它。

2 个答案:

答案 0 :(得分: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 
  -------------------------------------------------------------------

NATIVE SQL QUERY将:

   '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'

我希望你对此有所了解,如果我没有得到它让我知道。

答案 1 :(得分:-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")