首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能在Cuba平台上应用更新查询脚本

未能在Cuba平台上应用更新查询脚本
EN

Stack Overflow用户
提问于 2016-03-29 15:25:35
回答 2查看 672关注 0票数 2

当我应用此更新数据库脚本时,我将收到此错误。

代码语言:javascript
复制
default expression needed in statement [alter table WATERSCHEME_LOCATION add column LGA_ID integer not null ]

LGA_ID是一个与Location相关联的列,LGA_ID设置为强制性。但是当我删除强制命令时,我可以更新脚本。

代码语言:javascript
复制
@Table(name = "WATERSCHEME_SCHEME_C")
@Entity(name = "waterscheme$Scheme_c")
public class Scheme_c extends BaseIntegerIdEntity {
private static final long serialVersionUID = -5886267876250540580L;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "LGA_NAME_ID")
protected Lga lgaName;"""

这是我的定位表

代码语言:javascript
复制
/*
 * Copyright (c) 2016 water-scheme
 */
package com.company.waterscheme.entity;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import com.haulmont.cuba.core.entity.BaseIntegerIdEntity;
import com.haulmont.chile.core.annotations.NamePattern;

/**
 * @author samuel.thampy
 */
@NamePattern("%s|locationName")
@Table(name = "WATERSCHEME_LOCATION")
@Entity(name = "waterscheme$Location")
public class Location extends BaseIntegerIdEntity {
    private static final long serialVersionUID = 8201565825728955033L;

    @Column(name = "LOCATION_NAME", nullable = false)
    protected String locationName;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "LGA_ID")
    protected Lga lgaId;

    public void setLocationName(String locationName) {
        this.locationName = locationName;
    }

    public String getLocationName() {
        return locationName;
    }

    public void setLgaId(Lga lgaId) {
        this.lgaId = lgaId;
    }

    public Lga getLgaId() {
        return lgaId;
    }
    }

有人能帮我为什么要设置默认值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-29 17:14:05

另一种方法是修改更新脚本。如果使用CUBA Studio,则转到实体面板并按Generate脚本,如下图所示:

然后您将看到所有的数据库脚本。找到有alter table WATERSCHEME_LOCATION add column LGA_ID integer not null语句和添加DEFAULT {DEFAULT_VALUE}子句的适当凭证,在这里您可以指定位置实体的id,这个位置实体应该在更改null值的同时进行设置。现在你可以更新你的数据库了!

请注意,如果在另一个数据库上运行此脚本,可能会导致FOREIGN KEY constraint exception,因为不存在默认idLocation。为了避免这种情况,您可以向相同的更新脚本中添加另一条语句,这样如果数据库中不存在默认位置,那么就用指定的id插入它。

票数 2
EN

Stack Overflow用户

发布于 2016-03-29 16:43:07

可能您正在更改的表不是空的,是吗?顺便问一下,使用的是哪个数据库?

您不能仅仅将一个非空列添加到一个已经包含了一些数据的表中。

通常的步骤通常是如何实现的:

1)添加可空列

2)更新表中的所有现有行,以便它们得到一些值。

3)执行"alter列set null“以将列设置为非null。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36288575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档