私はdropwizard + morphia + jackson(dropwizardのデフォルト)の組み合わせを使用しようとしていますが、@JsonIgnore
または@JsonIgnoreProperties
を動作させることはできません。私は@JsonIgnoreProperties
を私のAPIのコンシューマに公開したくないプロパティのクラス定義よりも試してみました。また、フィールド宣言自体やgetterのすべての順列に対して、@JsonIgnore
を試してみました。セッター...一生懸命失礼しました。秘密のフィールドを非表示にするためにJacksonとJsonIgnore
編集:こちらのモデルです:
@Entity(value = "user", noClassnameStored = true)
@Indexes({
@Index(fields = {
@Field(value = "email", type = IndexType.ASC)},
options = @IndexOptions(unique = true, sparse = true)
)
})
public class User {
@Id
private ObjectId id = new ObjectId();
@JsonProperty
private String email;
@JsonProperty
private byte[] password;
@JsonProperty
private byte[] salt = SecurityUtils.getSalt();
@Reference
private Person person = new Person();
public String getId() {
return id.toHexString();
}
public void setId(ObjectId id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@JsonIgnore
public byte[] getPassword() {
return password;
}
@JsonIgnore
public void setPassword(String password) {
this.password = SecurityUtils.hashPassword(password.toCharArray(), this.getSalt());
}
@JsonIgnore
public byte[] getSalt() {
return salt;
}
@JsonIgnore
public void setSalt(byte[] salt) {
this.salt = salt;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
は上記に加えて、私は、@JsonIgnoreProperties({"password", "salt"} public class User...
を使用してクラスを定義するだけでなく、唯一のゲッター、セッター上@JsonIgnore
を持つ試みた
私はmorphia v1.2.1を使い続けています。今私は基本的なDAOを持っています。それは、morphiaのBasicDAOを拡張しています。それが役に立つなら、そのコードのスニペットを投稿することができます。
コードを投稿する可能性がありますか? – Tibrogargan