JPA(EclipseLink)とDerbyで作業しています。私のオブジェクトにはブール値のフィールドがあります。マージ操作の前に、フィールドはtrueに設定されます。マージ後、フィールドは依然としてfalse値を保持します。jpa-derbyブールマージ
@Entity
@Access(AccessType.PROPERTY)
public class SleepMeasure extends AbstractEntity {
private static final long serialVersionUID = 1361849156336265486L;
...
private boolean WeatherDone;
public boolean isWeatherDone() { // I have already tried with the "getWeatherDone()"
return WeatherDone;
}
public void setWeatherDone(boolean weatherDone) {
WeatherDone = weatherDone;
}
...
}
「getWeatherDone()」または「isWeatherDone()」を使用するかどうかは関係ありません。コードを使用
:そこにはエラーはありません、また警告とブール列が更新されなければならないこともない任意の情報:
public class WeatherDataCollectorImpl{
...
private void saveMeasures(WeatherResponse mResponse, SleepMeasure sleep) throws Exception {
AppUser owner = sleep.getOwner();
...
sleep.setWeatherDone(Boolean.TRUE);
reposService.updateEntity(sleep,SleepMeasure.class);
}
...
}
そしてここでは、私のリポジトリクラスは
public class RepositoryImpl{
...
public <T extends AbstractEntity> T updateEntity(T entity, Class<T> type) throws RepositoryException {
openEM();
EntityTransaction tr = em.getTransaction();
try {
tr.begin();
{
// entity.weatherdone has value true
entity = em.merge(entity);
// entity.weatherdone has value false
}
tr.commit();
} catch (Exception e) {
tr.rollback();
}
return entity;
}
...
}
JPAコンソール情報です。
--Merge clone with references [email protected]
...
--Register the existing object // other objects
...
--Register the existing object [email protected]
この小さな問題を解決するにはどうすればよいですか。
注: Derbyはこのフィールドを「SMALLINT」と定義しました。
ありがとうございました。
エンティティの完全なコードを表示します。 –
ログは何を言いますか?あなたは、呼び出されたSQLを見てください... –
@JB Nizet、私は私のコードの最も重要な部分で私の質問を更新しました。 –