EJBとJPAを使用してデータベースレコードを更新する際に問題が発生しました。永続性プロバイダー:org.eclipse.persistence.jpa.PersistenceProvider
レコードを作成するときは、次の方法を使用しています。
public void create(T entity) {
getEntityManager().persist(entity);
}
大丈夫。同じレコードを編集したいと思います。たとえば、私はエンティティを持っています:
@Entity
@Table(name = "OPERATION")
public class Operation implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "OPERATION_AUTHOR")
private String operationAuthor;
@Column(name = "OPERATION_TYPE")
private String operationType;
@Column(name = "OPERATION_STATUS")
private String operationStatus;
@Column(name = "CREATED")
@Temporal(value = TemporalType.DATE)
private Date created;
@Column(name = "COMPLETED")
@Temporal(value = TemporalType.DATE)
private Date completed;
//Getters and setters
}
たとえば、更新したいのはoperationStatus
。同じレコードIDとnewを設定して、エンティティを作成していますoperationStatus
。更新のために私はこの方法を使用しています:
public void edit(T entity) {
getEntityManager().merge(entity);
}
問題は、レコードを更新するとステータスが正しく更新されますが、他のすべての列の値null
が以前のように残されないように設定されていることです。更新のみoperationStatus
を行い、他の値は変更しません。これはEJBを使用してこれを行うことは可能ですか?そして、これを実現するために何を変更する必要がありますか?