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-Projectではないので、これはどういうわけか驚くべきことでした。なぜ彼がそれを探していたのか理解できません。とにかく、私は新しいプロジェクトを作成し、ソースを古いものから新しいものにコピーしました...それは機能します。

なぜ日食がそれをMavenプロジェクトと見なすのかを理解するのはまだ難しいと思います(なぜ彼はpom.xmlを探すのでしょうか?)

また、フィールド/列の名前について混乱が生じたことをお詫び申し上げます。皆さん、助けてくれてありがとう!

于 2012-04-20T11:23:44.797 に答える