我必须按照代码检查我的实体在字段上是否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 clean
和mvn install
,但这没有帮助。
Q1:我做错了什么?
Q2:有没有更简洁的编码方式isRequired
(也许更好地利用泛型)?