我有一个域类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查询中调用它。
答案 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")