0

Liferay 6.1を使用しています

示されているように、mysqlでテーブルを作成しました

create table Book (
    bookId bigint(10) not null primary key,
    companyId bigint(10) null ,
        userId bigint(10) null ,
    userName VARCHAR(75)
);

これは私のservice.xmlファイルです

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.1.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_1_0.dtd">
<service-builder package-path="com.test">
    <author>sai</author>
    <namespace>Library</namespace>
    <entity name="Book" local-service="true" remote-service="false">
        <column name="bookId" type="long" primary="true" />
        <column name="companyId" type="long" />
        <column name="userId" type="long" />
        <column name="userName" type="String" />
    </entity>
</service-builder>

これは私の BookLocalServiceImpl クラスです

public class BookLocalServiceImpl extends BookLocalServiceBaseImpl {
    public Book addBook(long userId, String userName) throws PortalException,
            SystemException {
        long bookId = CounterLocalServiceUtil.increment(Book.class.getName());
        Book book = bookPersistence.create(bookId);
        book.setCompanyId(1126);
        book.setUserId(1126);
        book.setUserName(title);
        book = bookPersistence.update(book, false);
        return book;
    }

}

processAction クラス内に、この方法を追加しました

BookLocalServiceUtil.addBook(userId, userName);

しかし問題は、Liferay フレームワークが library_book という名前で新しいテーブルを作成し、そのテーブルを更新したことです。

  mysql> select * from library_book;
+--------+-----------+--------+----------+
| bookId | companyId | userId | userName |
+--------+-----------+--------+----------+
|      1 |      1126 |   1126 | saibaba  |
+--------+-----------+--------+----------+
1 row in set (0.00 sec)

私のテーブルブックは空です

mysql> select * from Book;
Empty set (0.00 sec)

テーブル Book gets Updated を作成する方法を教えてください。

4

2 に答える 2

1
Have you created book table in mysql? if yes then mentioned it in service.xml file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.1.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_1_0.dtd">
<service-builder package-path="com.test">
    <author>sai</author>
    <namespace>Library</namespace>
    <entity name="Book" local-service="true" remote-service="false" table="book">
        <column name="bookId" type="long" primary="true" />
        <column name="companyId" type="long" />
        <column name="userId" type="long" />
        <column name="userName" type="String" />
    </entity>
</service-builder>
于 2013-02-23T18:47:23.177 に答える
1

実際のデータベースで作成されるエンティティは、[namespace]_[entityName] という名前になります。名前空間が「Library」でエンティティが「Book」であるため、結果のテーブルは「library_book」になり、得られるものはごく普通のことです

ただし、mysql コマンドを使用して検索する必要はありません。ほとんどの場合、Service Builder で提供される「Finder」機能を使用する必要があります。ServiceBulderの完全な開始チュートリアルを受講することをお勧めします。見逃すことはできません。

于 2013-02-25T09:18:36.063 に答える