grails - GORM复合映射不起作用

标签 grails gorm composite-key

在grails 2.4.3和postgresql作为数据库上,我有:

class ClassA {
    Set classB = []

    static belongsTo = [classC: ClassC]
    static hasMany = [classB: ClassB]
}

和:
@EqualsAndHashCode
class ClassB implements Serializable {

    ClassA classA
    Integer number

    static belongsTo = [classA: ClassA]

    static mapping = {
    id composite: ['number', 'classA']
}

我收到这个奇怪的错误:
[localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializin  
the application: Error creating bean with name 'transactionManagerPostProcessor':   
Initialization of bean failed; nested exception is  
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting 
bean property 'sessionFactory'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'sessionFactory': Invocation of init method failed; nested exception is 
java.lang.NullPointerException Message: Error creating bean with name 
'transactionManagerPostProcessor': Initialization of bean failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting 
bean property 'sessionFactory'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'sessionFactory': Invocation of init method failed; nested exception is 
java.lang.NullPointerException Line | Method ->> 266 | run in 
java.util.concurrent.FutureTask - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
- - - - - - - - | 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor | 617 | 
run . . . in java.util.concurrent.ThreadPoolExecutor$Worker ^ 745 | run in 
java.lang.Thread

到底是怎么回事?我做错了什么?

最佳答案

不知道消息是什么意思,但这是错误的:

Set ClassB = []

它应该是
Set<ClassB> classB = new HashSet<>()

更新:

参见the refdoc。这些字段应该是我会说的原始类型。

尝试转换以从ClassB实例中提取属性:
@EqualsAndHashCode
class ClassB implements Serializable {

  ClassA classA
  String someAProp
  Integer number

  void setClassA( ClassA a ){
    classA = a
    someAProp = a.someProp
  }

  static belongsTo = [classA: ClassA]

  static mapping = {
    id composite: ['number', 'someAProp']
  }
 }

关于grails - GORM复合映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904643/

相关文章:

hibernate - Grails/GORM:在Object.get查询中保留所有 transient 变量吗?

java - hibernate中composite-id复杂映射

REST - 如何设计带有复合键的 URI?

Grails - 如何设置唯一约束并引发异常

hibernate - Grails 2.4.4 完全忽略提取 :'join' *使用 PostgreSQL 时*

grails - Grails-自引用关系

grails - 如何从自定义验证器Grails中的另一个Domain类引用属性?

mysql - 复合键中的 AUTO_INCRMENT

xml - 在 grails 中 pretty-print XML 响应的最佳方式

url - Grails-在操作完成之前捕获URL