use*_*163 5 grails groovy hibernate hibernate-mapping
我需要将GUID/UUID作为行的id列.
这是为了能够在线和离线创建条目,当然在合并时不会在PK上产生这些冲突.我知道我可以缓解这一点,但我想保持简单,并且已经有使用uuid/guids来定义关系的遗留应用程序.数据也需要稍后同步.重写现有应用程序不是一种选择.
当我尝试使用GUID或UUID与grails时,我得到一个错误500.(在h2上使用GUID导致另一个错误 - 拒绝该数据库不支持GUID,如预期的那样).
我尝试保存'WithUUID'时收到此错误:
URI /gtestUUID/withUUID/save
Class java.lang.IllegalArgumentException
Message argument type mismatch
Run Code Online (Sandbox Code Playgroud)
完整错误500:http: //imgur.com/m2Udbm6.png
我试过使用mariadb 5.5和1.1.7驱动程序,这导致了同样的问题.
Grails 2.3.8.Windows 8.1(x64).Netbeans 7.4
全部默认.
示例类:
WithUUID.groovy:
package gtestuuid
class WithUUID {
String name
static constraints = {
}
static mapping = {
id generator: 'uuid'
}
}
Run Code Online (Sandbox Code Playgroud)
WithUUIDController.groovy:
package gtestuuid
class WithUUIDController {
def scaffold = WithUUID
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
(由于我的低代表,我无法发布更多文档/帖子的链接)
dim*_*l90 10
或者,您可以在类中指定UUID id字段,而无需像本例中那样进行任何初始化和设置映射
class Buyer {
UUID id
String name
String phone
String email
static constraints = {
}
static mapping = {
id generator : 'uuid2', type: 'pg-uuid' // pg-uuid because I use postgresql
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在Config.groovy中取出映射
grails.gorm.default.mapping = {
id generator : 'uuid2', type: 'pg-uuid'
}
Run Code Online (Sandbox Code Playgroud)
并且您的类将仅包含UUID id字段,而不包含任何redudant代码
您需要将id设置为String或UUID(或您需要的任何内容).
下面是我的班级用户的另一种可能性的例子:
import java.util.UUID
class User {
String id = UUID.randomUUID().toString()
static mapping = {
id generator:'assigned'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7485 次 |
| 最近记录: |