问题在于以下查询。我想列出L中包含id为“I01”的I的所有LI:s。
查询:
def c = L.withCriteria {
lis {
i {
eq("id","I01")
}
}
}
未找到“I_别名2x2_.ID”列;SQL语句:选择此选项。id为id4_1_,这是。版本为版本4_1_uu,别名为1x1_uu。i_id为i1_7_0_,lis_别名1x1_u。l_id为l2_7_0_,lis_别名为1x1_。版本为版本7_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0。id=lis_别名1x1_x1。l_id其中((i_别名2x2_.id=?)[42122-164]
我的标准是否有问题,或者我的域名是否不正确?如果我在LI域中添加'long id'并注释掉'id:composite…'行,然后标准运行正常。
域名:
class L {
long id
//can this hasMany be used here ? domain L is the other FK in LI domain
static hasMany = [lis: LI]
static mapping = {
lis: joinTable: false
}
static constraints = {
}
}
import org.apache.commons.lang.builder.HashCodeBuilder
class LI implements Serializable {
//domain has only FK:s to L and I
static belongsTo = [l: L, i: I]
static mapping= {
table "LI"
id composite:['i', 'l']
i column: 'i_id'
l column: 'l_id'
}
static constraints = {
}
boolean equals(other) {
if (!(other instanceof LI)) { return false }
other.l == l && other.i == i
}
int hashCode() {
def builder = new HashCodeBuilder()
builder.append l
builder.append i
builder.toHashCode()
}
}
class I {
String id
static mapping = {
table "I"
id generator:'assigned'
version: false
}
static constraints = {
}
}
引导:
I ii = new I(id:"I01").save(flush:true)
I ii2 = new I(id:"I02").save(flush:true)
L l = new L().save(flush:true);
L l2 = new L().save(flush:true);
LI li = new LI(l:l,i:ii).save(flush:true)
LI li2 = new LI(l:l2, i:ii2).save(flush:true)
架构:
创建表I(id varchar(255)不为空,版本bigint不为空,d varchar(255)不为空,主键(id));创建表LI(i_id varchar(255)不为null,l_id bigint不为null,版本bigint不为null,主键(i_id,l_id));alter table LI添加约束FK97D312CFA外键(i_id)引用i;alter table LI添加约束FK97D328A1A外键(l_id)引用l;
编辑:
Sérgio的解决方案工作,但如果你有我这样定义的域名:
第一类{String id
static belongsTo=[A:a] //has only 'string id' column
static mapping = {
table "I"
id generator:'assigned'
version: false
}
static constraints = {
}
}
那这就行不通了:
def c = L.withCriteria {
lis {
i {
eq("a.id","A01")
}
}
}
如果你只写:
def c = L.withCriteria {
lis {
i {
}
}
}
这将产生相同的原始错误。有点不对劲。
我这里也有同样的错误。这是标准上的东西,但是写了一点不同的作品:
def c = L.withCriteria {
lis {
eq('i.id',"I01")
}
}
我在将OneToMany外键映射到复合主键时遇到问题。我已经尝试过很多解决方案,包括这个post@onetomany和复合主键?。 所以情况是: 因此,在Box实体中,我试图在Box和Color实体之间创建一个OneToMany映射。为此,我应该使用Color实体的复合主键吗?如果我试图将列连接到复合主键(就像我在Box实体中所做的那样),我确实会得到一个错误-无法定位逻辑列“locale”。 我
这是我第一次尝试Android Studio。我安装了0.8.0,并更新到了0.8.2。一旦创建了一个项目,我就会得到错误消息: 错误:(1,0)未找到id为'com.android.application'的插件
我更新了我的尝试,将一些内容保留为CHAR,但仍然得到一个类似的错误:第1行错误:ORA-02091:事务回滚ORA-02291:违反完整性约束(MMM1339.ITEMNO_PHAR_FK)-未找到父密钥 需求的外键都在不同的供应主键中有值,所以我不确定为什么仍然存在问题。
我是Android开发的新手。我在这个项目中使用了Firebase,但在gradle:build过程中出现了这个错误 id为'com.google.gms的插件。未找到google服务。 这是我的build.gradle文件: 我也试着在依赖项中添加了这个 com.google.gmsgoogle-service: 3.0.0
这是我第一次使用Grails,我定义了以下域类 但当我尝试运行应用程序或为这些域生成任何控制器时,它显示了这个错误 我找不到问题,在此之前,控制台向我展示了这样的东西,它无法创建表“产品”和“类别” 编辑 我只是简单地解决了将“HasMany”改为“HasMany”的问题。但现在我不知道为什么控制台会显示这个
问题内容: 是否可以使用GORM标准执行“输入”标准。我正在寻找以下SQL的等效项 如果可能的话,我猜语法会像这样: 问题答案: Grails createCriteria文档包含一个使用子句的示例: 该文档包括以下说明: 注意:“ in”是一个时髦的保留字,因此必须用引号将其转义。