论坛

主页 » Liferay Portal » English » 3. Development

组合视图 统一视图 树状图
讨论主题 [ 上一个 | 下一个 ]
toggle
sasmita swain
adding one column in xisting database
2013年2月12日 下午8:01
答复

sasmita swain

等级: Regular Member

帖子: 172

加入日期: 2012年2月24日

最近的帖子

Hi

I want to add one more column in shopping category table..how to do by using expando

can you give example of this

Thanks

Sasmita
David H Nebinger
RE: adding one column in xisting database
2013年2月12日 下午8:24
答复

David H Nebinger

等级: Liferay Legend

帖子: 7008

加入日期: 2006年9月1日

最近的帖子

Every entity has an expando bridge that you can use to access extra values.

Use the XxxLocalServiceUtil to retrieve the entity that you want to add an expando value to.

Once you have the entity, you can use:

1
2 if (entity.getExpandoBridge().hasAttribute("MyAttribute")) {
3   entity.getExpandoBridge().getAttribute("MyAttribute");
4 }


This returns a Serializable instance which you can cast to your desired type.

To set the entity, you can use:

1
2 if (! entity.getExpandoBridge().hasAttribute("MyAttribute")) {
3   // add the entity definition with the type the value is.
4   entity.getExpandoBridge().addAttribute("MyAttribute", ExpandoColumnConstants.INTEGER);
5 }
6
7 // now set the value
8 entity.getExpandoBridge().setAttribute("MyAttribute", myValue);


myValue must be serializable.

QED.
sasmita swain
RE: adding one column in xisting database
2013年2月12日 下午10:35
答复

sasmita swain

等级: Regular Member

帖子: 172

加入日期: 2012年2月24日

最近的帖子

Thanks David

actually i create table like custom field in expando table and successfully adding column to expandocolumn table..

my code is:

public void init() throws PortletException {


ExpandoTable table = null;


long categoryId = Long.parseLong("10154");
try{
ExpandoTable existingTable=ExpandoTableLocalServiceUtil.getTable(45506);
/*table=ExpandoTableLocalServiceUtil.addDefaultTable(categoryId, ShoppingCategory.class.getName());*/
String tablename=existingTable.getName();
System.out.println("table name = " + tablename);
}catch (Exception e) {
e.printStackTrace();
}
ExpandoColumn column = null;
ExpandoRow row=null;

/*long tableId = table.getTableId();
System.out.println("tableId ="+tableId);
*/
try {

column = ExpandoColumnLocalServiceUtil.addColumn(10904, "decription1", ExpandoColumnConstants.STRING);
row=ExpandoRowLocalServiceUtil.addExpandoRow(row);
}

catch(DuplicateColumnNameException dcne) {


// Get the ExpandoColumn ("comments-astronauts")


try {
column = ExpandoColumnLocalServiceUtil.getColumn(10904, "decription1");
row=ExpandoRowLocalServiceUtil.getRow(11002);
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



super.init();
in jsp i hav 2 text fields.. i want to insert values in to expandovalues table..

Thanks

Sasmita





}
Siby Mathew
RE: adding one column in xisting database
2013年2月14日 上午3:14
答复

Siby Mathew

等级: Expert

帖子: 261

加入日期: 2011年3月4日

最近的帖子

Hi Sasmita,
David's code is also internally using the same API's that you are using.
You can use his code snippet as its simpler and more readable.

Also In my opinion, in your code, you should try to fetch the values first ...and then on the exception block, try to add new if not present.

Thanks,
Siby