JPA を使用してエンティティを永続化すると、バージョン列が更新/設定されません。私は休止状態のJPAを使用しています。バージョンは自動作成されますか、それとも手動で作成する必要がありますか?
抽象基本クラスがあります
@MappedSuperclass
public abstract class AbstractDomainEO {
private Date createdDate;
@Version
private Integer version;
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
および抽象クラスを拡張するサブエンティティクラス
@SuppressWarnings("serial")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("GENERIC")
public class ArtData extends AbstractDomainEO implements DomainObject {
更新#2 ....だから、バージョンを機能させるためだけに、継承のない別の単純なクラスを使用することにしましたが、運もありません。私の新しいクラス:
@Entity
@Table(name = "CAR")
public class CarEO implements Car {
private Date createdDate;
@Version
private Integer version;
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedDate() {
return this.createdDate;
}
@Id
@GeneratedValue
@Column(name = "CAR_ID")
private Integer id;
private String name;
public CarEO() {
super();
}
@Override
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CAR_ID_SEQ")
public Integer getId() {
return this.id;
}
@Override
public void setId(Integer id) {
this.id = id;
}
@Override
public String getName() {
return this.name;
}
@Override
public void setName(String name) {
this.name = name;
}
ただし、バージョンと createDate に対してはまだ null を取得します(ただし、これは別の問題です)
CarEO[createdDate=,version=0,id=3,name=bmw,comments=[]]
これは、作成しようとしたときの出力です。この EO オブジェクトの削除を選択します。
[org.hibernate.cache.StandardQueryCache]; デフォルトを使用します。[DEBUG] org.hibernate.SQL:111 - CAR (CAR_ID、createdDate、name、version) 値 (null、?、?、?) に挿入する
Hibernate: CAR (CAR_ID、createdDate、name、version) 値 (null、?、?、?) に挿入します。
[INFO] CarDaoJPASpringTest:64 - * ** * ** * ** * **** [DEBUG] org.hibernate.SQL:111 - careo0_.CAR_ID を CAR1_1_ として、careo0_.createdDate を createdD2_1_ として、careo0_.name を name1_ として選択します。 、careo0_.version を CAR careo0_ から version1_ として
ハイバネート: CAR careo0_ から careo0_.CAR_ID を CAR1_1_ として、careo0_.createdDate を createdD2_1_ として、careo0_.name を name1_ として、careo0_.version を version1_ として選択します。
CarEO[createdDate=,version=0,id=3,name=bmw,comments=[]] [DEBUG] org.hibernate.SQL:111 - CAR_ID=? の CAR から削除します。バージョン=? 休止状態: CAR_ID=? の CAR から削除します。バージョン=?