1

liferayポートレットからデータベースに2回目を挿入しているときに、次の例外が発生しました。

[JDBCExceptionReporter:76] Duplicate entry '0' for key 'PRIMARY'.(主キーの値が自動インクリメントされていないためだと思います)

カスタム ポートレットで主キーを自動インクリメントしているときに間違いを犯したと思いますが、どこを変更すればよいかわかりません。

この自動インクリメントの問題を解決するためにどこに変更を加えるかについて誰かが私を案内してくれますか?

これは、自動インクリメントが設定されたコードです

        restVar = restaurantPersistence.create(counterLocalService
                .increment(restaurant.class.toString()));
    } catch (SystemException e) {
        e.printStackTrace();
        return restVar = null;
    }

    try {



        resourceLocalService.addResources(0,restParam.getGroupId(), restParam.getUserId(),
                restaurant.class.getName(),restParam.getPrimaryKey(), false,true,true);
    } catch (PortalException e) {
        e.printStackTrace();
        return restVar = null;
    } catch (SystemException e) {
        e.printStackTrace();
        return restVar = null;
    }
4

1 に答える 1

1

これを試してみてください..

long primaryKeyId = CounterLocalServiceUtil.increment(ClassName.class.getName());

XYZDetails XYZDetails = XYZDetailsLocalServiceUtil.createXYZDetails(primaryKeyId);

XYZDetails Objを使用してその他の詳細を追加する

例えば

XYZDetails.setName("Name");

次に、詳細を保存します。

XYZDetailsLocalServiceUtil.addXYZDetails(XYZDetails);

これがあなたを助けることを願っています!!!

于 2012-10-22T04:51:46.500 に答える