Вставка Azure не добавляет новые свойства объекта (Java) - PullRequest
0 голосов
/ 11 октября 2018

У меня есть база данных с хранилищем таблиц Azure, где я храню сущности с различными свойствами, и все работает хорошо.Однако, когда я пытаюсь добавить новое свойство, оно вообще не сохраняется.Мой код InsertEntity выглядит следующим образом:

LunchDateEntity entity = new LunchDateEntity(ID);
try{

AppStorage storage = new AppStorage(TABLENAME);
entity.setProperty1(prop1)
entity.setProperty2(prop2)
entity.setProperty3(prop3)

entity.setNewProperty(newProp)

TableOperation operation = TableOperation.insert(entity);
m_table.execute(operation);
} 
catch(...) {...}

Опора 1,2,3, которые являются объектами, которые у меня были до этого, добавляются в хранилище таблиц, однако newProp не отображает att all в хранилище таблиц.

Я пытался жестко закодировать свойство при создании объекта, но безрезультатно.

Мой класс сущностей выглядит так:

public class myEntity extends TableServiceEntity {
public static final String TABLENAME = "myTable";
public static final String PARTITION_KEY = "part1";

public String m_prop1 = "";
public String m_prop2 = "";
public String m_prop3 = "";
public String m_newProp = "";

public myEntity() {
 this.partitionKey = PARTITION_KEY;
} 

public void setProp1(String prop1) {
  m_prop1 = prop1;
}

public String getProp1() {
 return m_prop1;
}

public void setNewProp(String newProp) {
 m_newProp = newProp;
}

И так далее, и так далее для всех свойств.Все они похожи друг на друга.

Я неправильно понял, как работает функция вставки?Есть какие-нибудь идеи, почему это не работает?

Заранее спасибо

1 Ответ

0 голосов
/ 11 октября 2018

исходя из моего теста, я думаю, что это из-за правила имени.Я протестировал добавить поле newProp или newProp1, так же как и ваше решение.Новое свойство не появилось.

Затем я попытался добавить name, tel или даже oldProp, все заработало ....

код функции:

@FunctionName("addentity")
    public String addentity(@HttpTrigger(name = "req", methods = {"get", "post"}, authLevel = AuthorizationLevel.ANONYMOUS) String req,
                            ExecutionContext context) {

        String storageConnectionString =
                "***";
        String jsonStr = "insert failed";

        try {
            // Retrieve storage account from connection-string.
            CloudStorageAccount storageAccount =
                    CloudStorageAccount.parse(storageConnectionString);

            // Create the table client.
            CloudTableClient tableClient =
                    storageAccount.createCloudTableClient();

            // Create a cloud table object for the table.
            CloudTable cloudTable = tableClient.getTableReference("test");

            // Create a new customer entity.
            myEntity entity = new myEntity("jay1","gong");
            //entity.setProp1("a");
            entity.setNewProp("new");
            entity.setOldProp("old");
            //entity.setNewProp1("new1");
            //entity.setName("kkkkk");

            // Create an operation to add the new customer to the people table.
            TableOperation insertEntity =
                    TableOperation.insert(entity);

            // Submit the operation to the table service.
            cloudTable.execute(insertEntity);

            jsonStr = entity.toString();

        } catch (Exception e) {
            // Output the stack trace.
            e.printStackTrace();
        }


        return jsonStr;
    }

моя сущность:

package com.fabrikam.functions;

import com.microsoft.azure.storage.table.TableServiceEntity;

public class myEntity extends TableServiceEntity {

    public String m_prop1 = "";
    public String m_newProp = "";
    public String m_newProp1 = "";

    public String name = "";
    public String oldProp = "";

    public myEntity(String lastName, String firstName) {
        this.partitionKey = lastName;
        this.rowKey = firstName;
    }

    public void setProp1(String prop1) {
        m_prop1 = prop1;
    }

    public String getProp1() {
        return m_prop1;
    }


    public String getNewProp(String newProp) {
        return m_newProp;
    }

    public String getNewProp1(String newProp1) {
        return m_newProp1;
    }


    public void setNewProp(String newProp) {
        m_newProp = newProp;
    }

    public void setNewProp1(String newProp1) {
        m_newProp1 = newProp1;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOldProp() {
        return oldProp;
    }

    public void setOldProp(String oldProp) {
        this.oldProp = oldProp;
    }
}

Вывод:

enter image description here

Я думаю, что что-то вроде 'newProp' было сохранено в хранилище таблиц Azure, вы можете настроить правило имен, тогда все будетбудь в порядке.

Надеюсь, тебе это поможет.


Я делаю еще тест:

enter image description here


Просто для краткости, наконец, все дело в неправильном формате моих геттеров и сеттеров.Нам нужно проверить определение объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...