在更新方法Liferay中获取用户地址

在更新方法Liferay中获取用户地址,liferay,listener,Liferay,Listener,我想知道地址什么时候被更改,然后我实现了一个类来覆盖地址的更新方法。 该类工作正常,但当我尝试获取无法访问的登录用户的所有地址时,我只获取管理员地址 这是我获取地址的代码: List<Address> userAddresses = AddressLocalServiceUtil.getAddresses(user.getCompanyId(), Contact.class.getName(), user.getContactId()); for(Address userAddres

我想知道地址什么时候被更改,然后我实现了一个类来覆盖地址的更新方法。 该类工作正常,但当我尝试获取无法访问的登录用户的所有地址时,我只获取管理员地址

这是我获取地址的代码:

List<Address> userAddresses = AddressLocalServiceUtil.getAddresses(user.getCompanyId(), Contact.class.getName(), user.getContactId());
for(Address userAddress : userAddresses) {
    System.out.println(userAddress);
}
List userAddresses=AddressLocalServiceUtil.getAddresses(user.getCompanyId(),Contact.class.getName(),user.getContactId());
for(地址用户地址:用户地址){
System.out.println(用户地址);
}
如果我在其他部分执行此代码,它工作正常,并且我获得了用户地址,那么它在重写更新的类中不工作

这是我的班级:

public class MyAddressLocalServiceImpl extends AddressLocalServiceWrapper {
    public Address updateAddress(long addressId, String street1, String street2, String street3, String city, String zip, long regionId, long countryId, int typeId, boolean mailing, boolean primary) {
        System.out.println("Actualizar una dirección");
        try {
        Address oldAddress = AddressLocalServiceUtil.getAddress(addressId);         
        Address aux = getWrappedService().updateAddress(addressId, street1, street2, street3, city, zip, regionId, countryId, typeId, mailing, primary);

        System.out.println("Old Address " + oldAddress);
        System.out.println("New Address " + aux);
    long id_user = AddressLocalServiceUtil.getAddress(addressId).getUserId();
            User user = UserLocalServiceUtil.getUser(id_user);      
        System.out.println("Obtenim les addresses");
            List<Address> userAddresses = AddressLocalServiceUtil.getAddresses(user.getCompanyId(), Contact.class.getName(), user.getContactId());
            for(Address userAddress : userAddresses) {
                System.out.println(userAddress);
            }
    } catch (PortalException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SystemException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
公共类MyAddressLocalServiceImpl扩展了AddressLocalServiceWrapper{
公共地址更新地址(长地址ID、字符串street1、字符串street2、字符串street3、字符串城市、字符串邮政编码、长地区ID、长国家ID、整型ID、布尔邮寄、布尔主地址){
System.out.println(“实现目标”);
试一试{
Address oldAddress=AddressLocalServiceUtil.getAddress(addressId);
地址aux=getWrappedService().updateAddress(地址ID,街道1,街道2,街道3,城市,邮编,地区ID,国家ID,类型ID,邮寄,主要);
System.out.println(“旧地址”+旧地址);
System.out.println(“新地址”+aux);
long id_user=AddressLocalServiceUtil.getAddress(addressId).getUserId();
User User=UserLocalServiceUtil.getUser(id\u User);
System.out.println(“Obtenim les地址”);
List userAddresses=AddressLocalServiceUtil.getAddresses(user.getCompanyId(),Contact.class.getName(),user.getContactId());
for(地址用户地址:用户地址){
System.out.println(用户地址);
}
}捕获(PortalException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(系统异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
有什么想法吗


非常感谢。

地址表存储添加该地址的用户的用户ID和用户名,这就是您收到偏差的原因

从地址表中,您可以使用classpk字段作为contactId,而不是从用户处获取contactId