私のエンティティがフィールドにまたは同様の注釈をmodel持っているかどうかを確認するには、次のコードを実行する必要があります。nullable=false
import javax.persistence.Column;
import .....
private boolean isRequired(Item item, Object propertyId) {
Class<?> property = getPropertyClass(item, propertyId);
final JoinColumn joinAnnotation = property.getAnnotation(JoinColumn.class);
if (null != joinAnnotation) {
return !joinAnnotation.nullable();
}
final Column columnAnnotation = property.getAnnotation(Column.class);
if (null != columnAnnotation) {
return !columnAnnotation.nullable();
}
....
return false;
}
これが私のモデルのスニペットです。
import javax.persistence.*;
import .....
@Entity
@Table(name="m_contact_details")
public class MContactDetail extends AbstractMasterEntity implements Serializable {
@Column(length=60, nullable=false)
private String address1;
注釈に慣れていない人@Columnのために、ヘッダーは次のとおりです。
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Column {
isRequiredが時々戻ってくることを期待してtrueいますが、そうではありません。私はすでに自分のプロジェクトでmvn cleanandmvn installを実行しましたが、それは役に立ちません。
Q1: 何が間違っていますか?
Q2: よりクリーンなコーディング方法はありますisRequiredか (おそらくジェネリックをより有効に活用する)?