1

我在 JPA 实体类中有问题。该实体正常工作,但今天我添加了另一个字段(一个简单的字符串,数据库中的 varchar(255) NOT NULL)。当我尝试坚持一个新实体时,我得到一个

java.sql.SQLException: Field 'companyLogoUrl' doesn't have a default value

嗯,这是真的。该列没有默认值。但在我的代码中,我为它设置了值。当我查看生成的插入语句时,该字段不存在。

INSERT INTO COMPANY (ACCOUNTNUMBER, ACCOUNTOWNER, BANK, BANKCODE, CHANGEDAT, 
COMPANYNAME, CREATEDAT, addressId)

变量的名称与列名匹配,因此没有可能导致错误的注释。它就像其他工作正常的字段/列一样被对待。

提前感谢您的帮助!

编辑:

这是类(一个groovy类):

@Entity
class Company extends KupiumEntity
{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
final int companyId

String companyName
String bank
String bankCode
String accountNumber
String accountOwner

String companyLogoUrl


@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="addressId")
Address address = new Address()


@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyId")
List<Invoice> invoices = new ArrayList<Invoice>()


@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyId")
List<Kupon> kupons = new ArrayList<Kupon>()


@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="mandatorId")
List<Mandator> mandators = new ArrayList<Mandator>()


@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="companyAppId")
List<CompanyApp> companyApps = new ArrayList<CompanyApp>()
}

编辑2:很抱歉造成混乱。表中的字段和列名为“companyLogoUrl”

4

1 回答 1

1

好吧,我今天解决了这个问题,虽然我仍然不知道原因是什么。

我试图运行我的 unitTests,这些告诉我他们在这个项目中找不到 pom.xml。这有点令人惊讶,因为它不是 Maven 项目,所以我不明白他为什么要寻找它。无论如何,我创建了一个新项目,将源代码从旧项目复制到新项目,然后......它可以工作。

我仍然很难弄清楚为什么 eclipse 甚至会认为它是一个 maven 项目(他为什么还要寻找 pom.xml?)

再次对字段/列名称的混淆表示歉意。谢谢你们的帮助,伙计们!

于 2012-04-20T11:23:44.797 回答