[英]How to mapping Foreign key as Primary Key in Grails?
我有一个与主键和外键具有相同属性的旧数据库。 我正在尝试从Grails映射它,但是我有问题。 这是我的域类:
class AccommodationPrice {
Integer id
Accommodation accommodation
static mapping = {
table 'alojamiento_precios'
id generator: 'assigned', name: accommodation, type: 'integer'
accommodation column: 'id'
}
}
这是数据库表:
CREATE TABLE alojamiento_precios
(
id integer NOT NULL,
CONSTRAINT alojamientoprecios_pkey PRIMARY KEY (id),
CONSTRAINT "FK alojamiento" FOREIGN KEY (id)
REFERENCES alojamiento (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
我读了这个问题Grails:外键作为主键? 但这对我不起作用:当我使用组合键时,grails要求我提供accommodation_id ,但是我的表中没有此属性,因为它是id 。
如果您只想将属性映射为ID,则可以像()一样进行操作:
class AccommodationPrice {
String price
long accomodationId
static mapping = {
table 'alojamiento_precios'
id generator: 'assigned', name:'accomodationId'
version false
}
static transients = ['accomodation']
Accomodation getAccomodation() {
Accomodation.get(accomodationId)
}
void setAccomodation(Accomodation a) {
accomodationId = a?.id
}
}
您甚至不需要声明所需的类型,GORM会假定您的住宿主键的类型。 使用某些条件查询时,您可能会遇到问题。 但是HQL很简单并且可以正常运行。
该策略被称为主键关联,您可以在此处在gorm上找到有关它的很好的讨论。
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.