Spring-LDAP ODM注释中似乎缺少一些东西。这是一个功能请求的问题,如果有更好的方式来贡献这样的请求,请说出来。
我想将@属性标记为只读,这样它将填充ldap中的bean以供引用,但不会将其持久化回LDAP。我建议在@Attribute中添加一个只读属性,对于通常的情况,默认为false。缺省属性*遗漏了所有操作属性,其中一些属性非常有用,并且传输的数据比所需的更多,从而减慢了具有永远不会使用的属性的ldap查询速度。
例如,它对于字面意义上的只读非常有用,例如entryUUID、etag等,如果您希望仅将某些字段持久存储回ldap,则不能使用这些方法,因为当您保存bean时,bean无法持久存储到ldap,并出现异常。但也适用于一般字段,您希望从结构上防止用户进行任何更新。
您可以通过不注释只读字段,然后使用单独的调用手动填充只读字段来解决此问题。非常混乱,并扼杀了查询速度。
同样在一个相关的主题上,query()可以有一个默认的属性列表,你已经在你的类中注释了它,类似于:
public static String[] getBeanAttributes(Class<?> beanClass) {
ArrayList<String> attrsObj = new ArrayList<>();
for (Field field : beanClass.getDeclaredFields()) {
if (field.isAnnotationPresent(Attribute.class)) {
Attribute attr = field.getAnnotation(Attribute.class);
attrsObj.add(attr.name());
}
}
String[] attrs = attrsObj.toArray(new String[attrsObj.size()]);
return attrs;
}现在我意识到,作为静态成员,String[] ()是在bean类已知之前构建的,但至少可以有一个类似上面的辅助函数,或者query attributes()的方法签名,该方法签名将bean类签名作为参数。
发布于 2014-08-06 14:46:45
我在Jira上创建了LDAP-312。谢谢。
https://stackoverflow.com/questions/25035647
复制相似问题