キーを生成するときに設定している名前空間をJPAに尊重させるにはどうすればよいですか?
私は現在のユーザーを取得し、Namespace
彼らに設定するために次のコードを使用していますUserId
:
final OAuthService oauth = OAuthServiceFactory.getOAuthService();
final User user = oauth.getCurrentUser();
NamespaceManager.set(user.getUserId());
次の手順を実行すると、ログに正しい情報が記録されます。
System.out.println("user.getUserId() = " + user.getUserId());
System.out.println("user.toString() = " + user.toString());
Key
これが私のコンストラクターの内部を作成する方法ですEntity
:
@Entity
public class ImageHandle
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonSerialize(using = com.vertigrated.gae.cms.jackson.KeySerializer.class)
@JsonDeserialize(using = com.vertigrated.gae.cms.jackson.KeyDeserializer.class)
private Key key;
....
コンストラクターで最初に行うことは:
this.key = KeyFactory.createKey(ImageHandle.class.getSimpleName(), uuid.toString());
Google App EngineのドキュメントにはKeyFactory
、電流NamespaceManager.get()
が返すものは何でも使用する必要があると記載されていますが、そうではありません。
次のコードを実行し、上記のコードでに設定したにもかかわらず、出力としてNamespace
設定を取得すると、次のようになります。""
user.getUserId()
final ImageHandle ir = new ImageHandle(fs.getBlobKey(aef), uuid, url, name, w, h, s);
ENTITY_MANAGER.persist(ir);
System.out.println("ir.getKey().getNamespace() = " + ir.getKey().getNamespace());
出力の結果:ir.getKey().getNamespace() =
管理コンソールにもNamespaces
表示されません。DataStore Viewer