Мне нужно инициализировать сбор с помощью сущности самостоятельно. Я имею в виду, я могу сделать это на Java, например ниже: Я бы назвал метод из класса StatelesBean.Как правильно инициализировать ленивую коллекцию через сущность?
Итак, как я могу это сделать в php? Если кто-нибудь может написать образец кода, я буду признателен.
@Transient
public void initialize(Collection collection, int levelCursor, int level)
{
if (collection instanceof PersistentBag)
{
if (ObjectUtil.isNull(((PersistentBag)collection).getSession()))
return;
else
{
Iterator itr = ((Collection)collection).iterator();
while (itr.hasNext())
{
if (levelCursor < level)
((SuperEntity)itr.next()).initialize(levelCursor, level);
else
itr.next();
}
}
} else
{
Iterator itr = ((Collection)collection).iterator();
while (itr.hasNext())
{
if (levelCursor < level)
((SuperEntity)itr.next()).initialize(levelCursor, level);
else
itr.next();
}
}
}
/**
* Searches for column and join column annotations for getter methods.
* If found then tries to initialize childs
* @param levelCursor
* @param level
*/
@Transient
public void initialize(int levelCursor, int level)
{
levelCursor++;
Method[] methods = this.getClass().getMethods();
Object obj = null;
try
{
for (Method method : methods)
{
if (method.getAnnotation(JoinColumn.class) != null || method.getAnnotation(JoinTable.class) != null || method.getAnnotation(OneToMany.class) != null)
{
Object result = method.invoke(this, new Object[0]);
if (result == null)
continue;
if (result instanceof SuperEntity)
{
if (levelCursor < level)
((SuperEntity)result).initialize(levelCursor, level);
} else if (result instanceof Collection)
initialize((Collection)result, levelCursor, level);
}
}
}
catch (Exception exc)
{
exc.printStackTrace();
}
}
Не могли бы вы объяснить немного больше, что вы пытаетесь сделать? Кстати, я не уверен, что пример Java здесь полезен. Некоторые PHP-контексты были бы более полезными. – lxg
Предположим, что у нас есть объект User и ownCars arrayCollection. И fetchType LAZY, поэтому, когда я получаю запись пользовательской сущности, я могу захотеть достичь коллекции OwnCars. Я хочу их инициализировать, например user.initialize (1) {1 is deepLevel} или user.initialize (user.getOwnedCars()) – webyildirim