持久化实体时,JPA忽略一个字段

时间:2012-04-19 20:05:03

标签: java jpa entity

我在JPA实体类中遇到问题。这个实体正如今应该完美地运作 我在数据库中添加了另一个字段(一个简单的字符串,varchar(255)NOT NULL)。当我试图坚持一个新实体时,我得到了一个

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

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

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

变量的名称与列名匹配,因此没有可能导致错误的注释。它的处理方式与其他字段/列一样正常。

提前感谢您的帮助!

编辑:

这是班级(groovy-class):

@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”

1 个答案:

答案 0 :(得分:1)

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

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

我仍然觉得很难弄清楚为什么eclipse甚至会把它想象成一个maven项目(为什么他还会寻找一个pom.xml?)

我再次为有关字段/列名称的混淆道歉。谢谢你的帮助,伙计们!