Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA在持久化实体时忽略字段_Java_Jpa_Entity - Fatal编程技术网

Java JPA在持久化实体时忽略字段

Java JPA在持久化实体时忽略字段,java,jpa,entity,Java,Jpa,Entity,我在JPA实体类中遇到问题。这个实体本来应该工作得很好,但是今天 我添加了另一个字段(一个简单的字符串,数据库中的varchar(255)NOT NULL)。当我试图持久化一个新实体时,我得到一个 java.sql.SQLException: Field 'companyLogoUrl' doesn't have a default value 嗯,这是真的。该列没有默认值。但在我的代码中,我为它设置了值。当我查看生成的insert语句时,该字段不存在 INSERT INTO COMPANY

我在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类):

@实体
类公司扩展了KupiumEntity
{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
最终国际公司ID
字符串公司名
串组
字符串银行代码
字符串帐号
字符串帐户所有者
弦公司
@manytone(cascade=CascadeType.PERSIST)
@JoinColumn(name=“addressId”)
地址=新地址()
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“companyId”)
列表发票=新的ArrayList()
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“companyId”)
List kupons=new ArrayList()
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“mandatorId”)
List mandators=new ArrayList()
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“companyAppId”)
List companyApps=new ArrayList()
}
编辑2:
很抱歉给你带来了困惑。表中的字段和列名为“CompanyGoul”

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

我试着运行我的单元测试,这些测试告诉我他们在这个项目中找不到pom.xml。这在某种程度上是令人惊讶的,因为它不是Maven项目,所以我不明白他为什么要寻找它。无论如何,我创建了一个新项目,将源代码从旧项目复制到新项目,然后。。。它起作用了

我仍然很难理解为什么eclipse甚至会将其视为一个maven项目(否则他为什么会寻找pom.xml?)


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

嗯,我今天解决了这个问题,虽然我还不知道原因是什么

我试着运行我的单元测试,这些测试告诉我他们在这个项目中找不到pom.xml。这在某种程度上是令人惊讶的,因为它不是Maven项目,所以我不明白他为什么要寻找它。无论如何,我创建了一个新项目,将源代码从旧项目复制到新项目,然后。。。它起作用了

我仍然很难理解为什么eclipse甚至会将其视为一个maven项目(否则他为什么会寻找pom.xml?)


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

请发布您的实体类。我们需要查看您的Java代码/映射。现有字段和新字段之间肯定存在一些差异,比如缺少注释、getter/setter、不正确的修饰符……看起来这个类与生成的SQL不太匹配。。。改变?创建数据?你确定这里的所有内容都在同一个页面上吗?我没有看到logoUrl字段。您使用的是字段访问,因此字段名很重要,而不是getter/setter(如果有)Hmmm,神秘编辑现在显示数据库字段与实体匹配。当我发布我的答案时,我发誓情况并非如此。请发布您的实体类。我们需要查看您的Java代码/映射。现有字段和新字段之间肯定存在一些差异,比如缺少注释、getter/setter、不正确的修饰符……看起来这个类与生成的SQL不太匹配。。。改变?创建数据?你确定这里的所有内容都在同一个页面上吗?我没有看到logoUrl字段。您使用的是字段访问,因此字段名很重要,而不是getter/setter(如果有)Hmmm,神秘编辑现在显示数据库字段与实体匹配。我发誓,当我发布我的答案时,情况并非如此。
@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>()
}