Grails:无法从Hibernate注释类继承

Grails:无法从Hibernate注释类继承,hibernate,grails,inheritance,gorm,Hibernate,Grails,Inheritance,Gorm,我当前的项目需要在某些域字段上使用Hibernate的@ColumnTransformer,但我无法使Grails域类继承自Hibernate注释的域类 我得到一个映射异常:未知实体:BaseBook 以下是代码摘录: Grails域类 关联和验证约束写在这里 //grails-app/domain/Book.groovy class Book extends BaseBook { String nom static hasMany = [pages:Page] stati

我当前的项目需要在某些域字段上使用Hibernate的
@ColumnTransformer
,但我无法使Grails域类继承自Hibernate注释的域类

我得到一个映射异常:未知实体:BaseBook

以下是代码摘录:

Grails域类 关联和验证约束写在这里

//grails-app/domain/Book.groovy
class Book extends BaseBook {

   String nom

   static hasMany = [pages:Page]
   static constraints = {
      nom(nullable:true)
   }
   //static mapWith = "none"
   static mapping ={
      table "book"
   }
}
Hibernate注释基类 此处编写的自定义列转换(加密/解密)(无法在常规Grails域类中设置)

休眠映射 它声明BaseBook和BasePage(也需要按页面扩展)


如果我要这么做。我将使用GORM事件beforeInsert/beforeUpdate和onLoad

有关更多信息,请参阅:

  • 事件
  • 继承

此解决方案不适用,因为我的另一个要求是对其中一些字段(分数、金额)进行查询和聚合。Jasypt插件也不适用,因为无法对GORM/hibernate加密字段执行聚合功能
// src/groovy/BaseBook.groovy
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id
import javax.persistence.Version
import javax.persistence.Column
import org.hibernate.annotations.ColumnTransformer

@Entity 
class BaseBook { 
   @Id @GeneratedValue 
   Long id

   @Version
   Long version

   @ColumnTransformer(read = "AES_DECRYPT(title, 'password')", 
                      write = "AES_ENCRYPT(?, 'password')")
   @Column(columnDefinition = "VARBINARY(500)")
   String title
}
<!-- grails-app/conf/hibernate.cfg.xml -->
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
   '-//Hibernate/Hibernate Configuration DTD 3.0//EN'
   'http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd'>

<hibernate-configuration>

   <session-factory>
      <mapping class='BaseBook' />
      <mapping class='BasePage' />
   </session-factory>

</hibernate-configuration>