私はこの状況を持っています:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="tipo", discriminatorType=DiscriminatorType.CHAR, length=1)
public class Utente implements Serializable {
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 5)
@Column(nullable = false, length = 5)
private String cap;
...
@Entity
@DiscriminatorValue(value="C")
@PrimaryKeyJoinColumn(name="id")
public class Cliente extends Utente implements Serializable {
...
Cliente のインスタンスでフィールド「Cap」を変更しますが、実行しようとすると:
Utente u=utenteFacade.find(id);
u.setCap("88888");
utenteFacade.edit(u);
また
Cliente c=clienteFacade.find(id);
c.setCap("88888");
clienteFacade.edit(u);
でも結果は変わらない
例外を受け取ります: javax.validation.ConstraintViolationException: Bean Validation 制約違反がコールバック イベント 'preUpdate' で自動 Bean Validation を実行中に発生しました。詳細については、埋め込まれた ConstraintViolations を参照してください。
ここのようにエンティティクラスの定義を変更すると、utenteFacade.edit(u) がうまく機能します
@Entity
public class Utente implements Serializable {
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 5)
@Column(nullable = false, length = 5)
private String cap;
...
@Entity
public class Cliente implements Serializable {
...