HelloRacoon:
私はいくつかのエンティティを永続化するためにHibernateを使用するつもりです。
EntityClass entity = new EntityClass();
Object obj = (Object) entity;
hibernateSession.persist(obj)
私は、元EntityClass内のフィールド値が保存されることを保証することはできますか?
フィールド値ガベージコレクタがクリアされませんか?
他のすべてのケースでは、私は、アップキャストは、元のフィールドの値を保持することを保証することができますか?
(休止状態を使用していない他の一般的な例)
それは私の元のコードです
Class<?> clazz = Class.forName(~~~); // from external file
Iterator<?> iterator = ((Iterator<?>) clazz.getConstructor(String.class).newInstance(~~~); // from external file
while (iterator.hasNext()) {
for (JsonEntity content : (List<JsonEntity>) iterator.next()) {
session.saveOrUpdate(content.toEntity());
}
session.flush();
}
transaction.commit();
user3817206:
- あなたは、エンティティオブジェクトにキャストして渡す必要はありません。
EntityClass entity = new EntityClass();
hibernateSession.persist(entity);
限り、あなたのエンティティ・クラスが参照されているとして、それがガベージコレクションされません
スーパークラスにあなたのオブジェクトをキャストすると、元のフィールド/メソッドを削除していますが、唯一のスーパークラスで使用可能な唯一のアクセスフィールド/メソッドことはできません。