gpt4 book ai didi

java - Azure insert 不会添加实体的新属性 (Java)

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:40 25 4
gpt4 key购买 nike

我有一个带有 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(...) {...}

Prop 1,2,3 是我之前拥有的实体,已添加到表存储中,但是,newProp 并没有在表存储中显示。

我尝试在构造实体时对属性进行硬编码,但无济于事。

我的实体类如下所示:

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;
}

所有属性依此类推。他们看起来都很相似。

我是否误解了插入函数的工作原理?有什么想法为什么这行不通吗?

提前致谢

最佳答案

根据我的测试,我认为这是因为名称规则。我测试了添加 newProp 或 newProp1 字段,与您的解决方案相同。新的特性没有出现。

然后我尝试添加姓名、电话甚至 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 Table Storage保留了,你可以调整名称规则,然后一切都会好起来的。

<小时/>

我做了进一步的测试:

enter image description here

<小时/>

只是为了总结,最后,这都是关于我的 getter 和 setter 的错误格式。我们需要检查对象定义。

关于java - Azure insert 不会添加实体的新属性 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com