當我試圖更新表時顯示上述異常。 我的模型類是TransientObjectException:給定對象具有空標識符:com.netelixir.lxr.google.entities.CampaignStructure
@Entity
@com.googlecode.objectify.annotation.Entity
@Table(name = "campaign_structure")
@CsvReport(value = ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
public class CampaignStructure extends Report implements Serializable{
@Column(name = "CAMPAIGN_ID")
@CsvField(value = "Campaign ID", reportField = "CampaignId")
private Long campaignId;
@Column(name = "CAMPAIGN_NAME", length = 255)
@CsvField(value = "Campaign", reportField = "CampaignName")
private String campaignName;
@Column(name = "CAMPAIGN_STATUS", length = 32)
@CsvField(value = "Campaign state", reportField = "CampaignStatus")
private String campaignStatus;
@Column(name = "BUDGET")
@CsvField(value = "Budget", reportField = "Amount")
@MoneyField
private BigDecimal budget;
@Column(name = "BUDGET_ID")
@CsvField(value = "Budget ID", reportField = "BudgetId")
private Long budgetId;
@Lob
@Column(name = "LABELS", length = 2048)
@CsvField(value = "Labels", reportField = "Labels")
private String labels;
@Lob
@Column(name = "LABEL_IDS", length = 2048)
@CsvField(value = "Label IDs", reportField = "LabelIds")
private String labelIds;
@Column(name = "ADVERTISING_CHANNEL_TYPE", length = 32)
@CsvField(value = "Advertising Channel", reportField = "AdvertisingChannelType")
protected String advertisingChannelType;
@Column(name = "ADVERTISING_CHANNEL_SUBTYPE", length = 32)
@CsvField(value = "Advertising Sub Channel", reportField = "AdvertisingChannelSubType")
protected String advertisingChannelSubType;
@Column(name = "TRACKING_URL_TEMPLATE", length=2048)
@CsvField(value = "Tracking template", reportField = "TrackingUrlTemplate")
private String trackingUrlTemplate;
@Column(name = "URL_CUSTOM_PARAMETERS", length=2048)
@CsvField(value = "Custom parameter", reportField = "UrlCustomParameters")
private String urlCustomParameters;
@Column(name = "START_DATE", length=2048)
@CsvField(value = "Start date", reportField = "StartDate")
@Temporal(javax.persistence.TemporalType.DATE)
private Date startDate;
@Column(name = "END_DATE", length=2048)
@CsvField(value = "End date", reportField = "EndDate")
@Temporal(javax.persistence.TemporalType.DATE)
我DAO類[增訂一個]
public void updateCampaign(Campaign campaigns,GleServices gleServices){
Session session = sessionFactory.openSession();
Transaction tx = null;
try{
session = sessionFactory.openSession();
StringBuilder updateStmt = new StringBuilder();
updateStmt.append(" update CampaignStructure ");
updateStmt.append(" set accountId = :accountId ");
updateStmt.append(" , budget = :budget ");
updateStmt.append(" , campaignName= :campaignName ");
updateStmt.append(", budgetId = :budgetId");
updateStmt.append(", campaignStatus = :campaignStatus");
updateStmt.append(", startDate = :startDate");
updateStmt.append(", endDate = :endDate");
updateStmt.append(", trackingUrlTemplate = :trackingUrlTemplate");
updateStmt.append(", urlCustomParameters = :urlCustomParameters");
updateStmt.append(", labels = :labels");
updateStmt.append(" where campaignId = :campaignId");
Query query = session.createQuery(updateStmt.toString());
query.setParameter("accountId", gleServices.getAccountDetails().getSeAccountId());
query.setParameter("budget", BigDecimal.valueOf((campaigns.getBudget().getAmount().getMicroAmount())));
query.setParameter("campaignId", campaigns.getId());
query.setParameter("campaignName", campaigns.getName());
query.setParameter("budgetId", campaigns.getBudget().getBudgetId());
query.setParameter("campaignStatus", campaigns.getStatus());
query.setParameter("startDate", campaigns.getStartDate());
query.setParameter("endDate", campaigns.getEndDate());
query.setParameter("trackingUrlTemplate", campaigns.getTrackingUrlTemplate());
if(campaigns.getUrlCustomParameters() != null){
query.setParameter("urlCustomParameters",getUrlCustomParams(campaigns.getUrlCustomParameters().getParameters()));
}else{
query.setParameter("urlCustomParameters",null);
}
if(campaigns.getLabels()!=null){
// campaignStructure.setLabels(campaigns.getLabels().toString());
query.setParameter("labels", campaigns.getLabels().toString());
}
else
query.setParameter("labels", null);
query.executeUpdate();
}catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}finally {
session.close();
}
}
戰役變量,我們得到的所有數據,從營銷活動我需要更新的所有數據(campaign_structure)表
您有@Id註釋 –