2013-08-13 49 views
10

Có ai giúp tôi trong trường hợp này không. Tôi đang sử dụng hibernate để chọn dữ liệu từ db, nhưng khi tôi kiểm tra từ sql gỡ lỗi đăng nhập. Tôi luôn thấy bản cập nhật sql được in sau khi tôi sử dụng "select" sql để lấy dữ liệu từ DB.Tại sao hibernate luôn gọi câu lệnh "update" sau khi sử dụng câu lệnh "select" trong MySQL?

2013-08-13 13:39:08,054 DEBUG [http-0.0.0.0-8080-1-TASK]-[org.hibernate.SQL] 
SELECT this_.id           AS id504_2_, 
    this_.bridgedlinedialoguri       AS bridgedL2_504_2_, 
    this_.bridgedlineuri        AS bridgedL3_504_2_, 
    this_.currentsipsubscriberprofile     AS currentS4_504_2_, 
    this_.currentsipsubscriberprofiletype    AS currentS5_504_2_, 
    this_.messageeventuri        AS messageE6_504_2_, 
    this_.nemobjectid         AS neMobjec7_504_2_, 
    this_.objectid          AS objectId504_2_, 
    this_.objecttype         AS objectType504_2_, 
    this_.sipbridgedlineurienable      AS sipBrid10_504_2_, 
    this_.sipdirectconnecturi       AS sipDire11_504_2_, 
    this_.sipdirectconnecturienable      AS sipDire12_504_2_, 
    this_.sipidentityaddress       AS sipIden13_504_2_, 
    this_.sipidentitycontacturi       AS sipIden14_504_2_, 
    this_.sipidentitypassword       AS sipIden15_504_2_, 
    this_.sipidentityrealm        AS sipIden16_504_2_, 
    this_.sipiotparametersenablestatus     AS sipIotP17_504_2_, 
    this_.sipiotparametersprivacy      AS sipIotP18_504_2_, 
    this_.sipiotparametersrequire100rel     AS sipIotP19_504_2_, 
    this_.sipiotparameterssupport100rel     AS sipIotP20_504_2_, 
    this_.sipmessageeventurienable      AS sipMess21_504_2_, 
    this_.sippreferredid        AS sipPref22_504_2_, 
    this_.sippreferredidmode       AS sipPref23_504_2_, 
    this_.sipsubscribertemplateenable     AS sipSubs24_504_2_, 
    this_.sipusername         AS sipUser25_504_2_, 
    this_.versipsubscriberprofile_id     AS verSipS26_504_2_, 
    versioneds2_.id          AS id507_0_, 
    versioneds2_.configurationprofileid     AS configur4_507_0_, 
    versioneds2_.description       AS descript2_507_0_, 
    versioneds2_.version        AS version507_0_, 
    configurat3_.id          AS id505_1_, 
    configurat3_.description       AS descript2_505_1_, 
    configurat3_.NAME         AS name505_1_, 
    configurat3_.type         AS type505_1_, 
    profilemob4_.versionedsipsubscriberconfigprofile_id AS Versione1_507_4_, 
    profilemob4_.element        AS element4_ 
FROM test this_ 
    LEFT OUTER JOIN versionedsipsubscriberconfigprofile versioneds2_ 
        ON this_.versipsubscriberprofile_id = versioneds2_.id 
    LEFT OUTER JOIN configurationprofile configurat3_ 
        ON versioneds2_.configurationprofileid = configurat3_.id 
    LEFT OUTER JOIN versionedsipsubscriberconfigprofile_profilemobjectids 
        profilemob4_ 
        ON versioneds2_.id = 
        profilemob4_.versionedsipsubscriberconfigprofile_id 
WHERE this_.objectid = ? 

2013-08-13 13:39:08,103 DEBUG [http-0.0.0.0-8080-1-TASK]-[org.hibernate.SQL] 
UPDATE test 
SET bridgedlinedialoguri = ?, 
    bridgedlineuri = ?, 
    currentsipsubscriberprofile = ?, 
    currentsipsubscriberprofiletype = ?, 
    messageeventuri = ?, 
    nemobjectid = ?, 
    objectid = ?, 
    objecttype = ?, 
    sipbridgedlineurienable = ?, 
    sipdirectconnecturi = ?, 
    sipdirectconnecturienable = ?, 
    sipidentityaddress = ?, 
    sipidentitycontacturi = ?, 
    sipidentitypassword = ?, 
    sipidentityrealm = ?, 
    sipiotparametersenablestatus = ?, 
    sipiotparametersprivacy = ?, 
    sipiotparametersrequire100rel = ?, 
    sipiotparameterssupport100rel = ?, 
    sipmessageeventurienable = ?, 
    sippreferredid = ?, 
    sippreferredidmode = ?, 
    sipsubscribertemplateenable = ?, 
    sipusername = ?, 
    versipsubscriberprofile_id = ? 
WHERE id = ? 

Cảm ơn

Chỉnh sửa: Mã để nhận được dữ liệu:

@Override public MObjectId findResult(final MObjectId id, boolean isLocked) 
{ 
    Criteria c = getSession().createCriteria(Test.class); 
    c.add(Expression.eq("objectId", id)); 
    if(isLocked) 
    { 
     c.setLockMode("this", LockMode.UPGRADE); 
    } 
    Test extension = (Test) c.uniqueResult(); 
    return (extension != null) 
     ? new MObjectId("/ontPotsSipExtNr=" + extension.getId()) 
     : null; 
} 

Và thực thể lớp như sau:

@Entity 
public class OntPotsSipExtension implements Serializable { 

private static final long serialVersionUID = 1L; 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long id; 

public OntPotsSipExtension() { 

} 

@Column(unique = true, nullable = false) 
@Type(type = "com.container.persistence.MObjectIdUserType") 
private MObjectId objectId; 

@Column(unique = false, nullable = true) 
@Type(type = "com.container.persistence.MObjectTypeUserType") 
private MObjectType objectType; 

private ToggleSwitch sipSubscriberTemplateEnable = ToggleSwitch.DISABLE; 

@ManyToOne 
private VersionedSipSubscriberConfigProfile verSipSubscriberProfile = null; 

@Column(unique = false, nullable = true) 
@Type(type = "com.container.persistence.MObjectIdUserType") 
private MObjectId neMobjectId; 
private String sipIdentityAddress; 
private String sipIdentityRealm; 
private Password sipIdentityPassword; 
private String sipIdentityContactURI; 

private String sipUsername; 

private ToggleSwitch sipDirectConnectUriEnable = ToggleSwitch.DISABLE; 
@EnabledExpression("sipDirectConnectUriEnable eq 'ENABLE'") 
private String sipDirectConnectUri; 

private ToggleSwitch sipMessageEventUriEnable = ToggleSwitch.DISABLE; 
@EnabledExpression("sipMessageEventUriEnable eq 'ENABLE'") 
private String messageEventUri; 

private ToggleSwitch sipBridgedLineUriEnable = ToggleSwitch.DISABLE; 
@EnabledExpression("sipBridgedLineUriEnable eq 'ENABLE'") 
private String bridgedLineUri; 
@EnabledExpression("sipBridgedLineUriEnable eq 'ENABLE'") 
private String bridgedLineDialogUri; 

@Column(unique = false, nullable = true) 
@Type(type = "com.container.persistence.MObjectIdUserType") 
private MObjectId currentSipSubscriberProfile; 
@Column(unique = false, nullable = true) 
@Type(type = "com.container.persistence.MObjectTypeUserType") 
private MObjectType currentSipSubscriberProfileType; 
/* SIP IOT Parameters*/ 
private PrivacySettings sipIotParametersPrivacy = PrivacySettings.NULL; 
private ToggleSwitch sipIotParametersEnableStatus = ToggleSwitch.ENABLE; 
private ToggleSwitch sipPreferredIDMode = ToggleSwitch.DISABLE; 
private String sipPreferredID; 
private ToggleSwitch sipIotParametersSupport100Rel = ToggleSwitch.DISABLE ; 
private ToggleSwitch sipIotParametersRequire100Rel = ToggleSwitch.DISABLE; 

public String getBridgedLineDialogUri() { 
return bridgedLineDialogUri; 
} 
public void setBridgedLineDialogUri(String bridgedLineDialogUri) { 
this.bridgedLineDialogUri = bridgedLineDialogUri; 
} 
public String getBridgedLineUri() { 
return bridgedLineUri; 
} 
public void setBridgedLineUri(String bridgedLineUri) { 
this.bridgedLineUri = bridgedLineUri; 
} 
public Long getId() { 
return id; 
} 
public void setId(Long id) { 
this.id = id; 
} 
public String getMessageEventUri() { 
return messageEventUri; 
} 
public void setMessageEventUri(String messageEventUri) { 
this.messageEventUri = messageEventUri; 
} 
public MObjectId getObjectId() { 
return objectId; 
} 
public void setObjectId(MObjectId objectId) { 
this.objectId = objectId; 
} 
public String getSipDirectConnectUri() { 
return sipDirectConnectUri; 
} 
public void setSipDirectConnectUri(String sipDirectConnectUri) { 
this.sipDirectConnectUri = sipDirectConnectUri; 
} 
public String getSipIdentityAddress() { 
return sipIdentityAddress; 
} 
public void setSipIdentityAddress(String sipIdentityAddress) { 
this.sipIdentityAddress = sipIdentityAddress; 
} 
public String getSipIdentityContactURI() { 
return sipIdentityContactURI; 
} 
public void setSipIdentityContactURI(String sipIdentityContactURI) { 
this.sipIdentityContactURI = sipIdentityContactURI; 
} 
public Password getSipIdentityPassword() { 
return sipIdentityPassword; 
} 
public void setSipIdentityPassword(Password sipIdentityPassword) { 
this.sipIdentityPassword = sipIdentityPassword; 
} 
public String getSipIdentityRealm() { 
return sipIdentityRealm; 
} 
public void setSipIdentityRealm(String sipIdentityRealm) { 
this.sipIdentityRealm = sipIdentityRealm; 
} 
public String getSipUsername() { 
return sipUsername; 
} 
public void setSipUsername(String sipUsername) { 
this.sipUsername = sipUsername; 
} 
public ToggleSwitch getSipSubscriberTemplateEnable() { 
return sipSubscriberTemplateEnable; 
} 
public void setSipSubscriberTemplateEnable(
ToggleSwitch sipSubscriberTemplateEnable) { 
this.sipSubscriberTemplateEnable = sipSubscriberTemplateEnable; 
} 

public VersionedSipSubscriberConfigProfile getVerSipSubscriberProfile() { 
return verSipSubscriberProfile; 
} 
public void setVerSipSubscriberProfile(
VersionedSipSubscriberConfigProfile verSipSubscriberProfile) { 
this.verSipSubscriberProfile = verSipSubscriberProfile; 
//TODO 
/* 
* This needs to be done so that the Usage State changes to DEPLOY at the first 
* instance this profile is used 
*/ 
//this.subscriberProfile.setUsageState(UsageState.USAGE_DEPLOY); 
} 
public ToggleSwitch getSipBridgedLineUriEnable() { 
return sipBridgedLineUriEnable; 
} 
public void setSipBridgedLineUriEnable(ToggleSwitch sipBridgedLineUriEnable) { 
this.sipBridgedLineUriEnable = sipBridgedLineUriEnable; 
} 
public ToggleSwitch getSipDirectConnectUriEnable() { 
return sipDirectConnectUriEnable; 
} 
public void setSipDirectConnectUriEnable(ToggleSwitch sipDirectConnectUriEnable) { 
this.sipDirectConnectUriEnable = sipDirectConnectUriEnable; 
} 
public ToggleSwitch getSipMessageEventUriEnable() { 
return sipMessageEventUriEnable; 
} 
public void setSipMessageEventUriEnable(ToggleSwitch sipMessageEventUriEnable) { 
this.sipMessageEventUriEnable = sipMessageEventUriEnable; 
} 
public MObjectId getNeMobjectId() { 
return neMobjectId; 
} 
public void setNeMobjectId(MObjectId neMobjectId) { 
this.neMobjectId = neMobjectId; 
} 
public MObjectId getCurrentSipSubscriberProfile() { 
return currentSipSubscriberProfile; 
} 
public void setCurrentSipSubscriberProfile(MObjectId currentSipSubscriberProfile) { 
this.currentSipSubscriberProfile = currentSipSubscriberProfile; 
} 
public MObjectType getCurrentSipSubscriberProfileType() { 
return currentSipSubscriberProfileType; 
} 
public void setCurrentSipSubscriberProfileType(
MObjectType currentSipSubscriberProfileType) { 
this.currentSipSubscriberProfileType = currentSipSubscriberProfileType; 
} 
public MObjectType getObjectType() { 
return objectType; 
} 
public void setObjectType(MObjectType objectType) { 
this.objectType = objectType; 
} 
public PrivacySettings getSipIotParametersPrivacy() { 
return sipIotParametersPrivacy; 
} 
public void setSipIotParametersPrivacy(PrivacySettings privacy) { 
this.sipIotParametersPrivacy = privacy; 
} 
public ToggleSwitch getSipIotParametersEnableStatus() { 
return sipIotParametersEnableStatus; 
} 
public void setSipIotParametersEnableStatus(ToggleSwitch sipIotParametersEnableStatus) { 
this.sipIotParametersEnableStatus = sipIotParametersEnableStatus; 
} 
public ToggleSwitch getSipIotParametersSupport100Rel() { 
return sipIotParametersSupport100Rel; 
} 
public void setSipIotParametersSupport100Rel(ToggleSwitch support100Rel) { 
this.sipIotParametersSupport100Rel = support100Rel; 
} 
public ToggleSwitch getSipIotParametersRequire100Rel() { 
return sipIotParametersRequire100Rel; 
} 
public void setSipIotParametersRequire100Rel(ToggleSwitch require100Rel) { 
this.sipIotParametersRequire100Rel = require100Rel; 
} 
public ToggleSwitch getSipPreferredIDMode() { 
return sipPreferredIDMode; 
} 
public void setSipPreferredIDMode(ToggleSwitch sipPreferredIDMode) { 
this.sipPreferredIDMode = sipPreferredIDMode; 
} 
public String getSipPreferredID() { 
return sipPreferredID; 
} 
public void setSipPreferredID(String sipPreferredID) { 
this.sipPreferredID = sipPreferredID; 
} 
public Properties getProperties(boolean enableSipIotParams) 
{ 
String QUOTES= "\""; 
Properties props = new Properties(); 

props.setProperty("AddressOfRecord",QUOTES + (getSipIdentityAddress() != null ? getSipIdentityAddress() : "")+ QUOTES); 
props.setProperty("Realm", QUOTES + (getSipIdentityRealm() != null ? getSipIdentityRealm() : "")+ QUOTES); 
props.setProperty("Password", QUOTES + (getSipIdentityPassword() != null ? getSipIdentityPassword().getPassword() : "")+ QUOTES); 
props.setProperty("ContactURIUser",QUOTES + (getSipIdentityContactURI() != null ? getSipIdentityContactURI() : "")+ QUOTES); 
props.setProperty("username",QUOTES + (getSipUsername() != null ? getSipUsername() : "")+ QUOTES); 
if (getSipDirectConnectUriEnable() != null && getSipDirectConnectUriEnable().equals(ToggleSwitch.ENABLE)) 
{ 
props.setProperty("DirectConnectURI",QUOTES + (getSipDirectConnectUri() != null ? getSipDirectConnectUri() : "")+ QUOTES); 
} 
if (getSipMessageEventUriEnable() != null && getSipMessageEventUriEnable().equals(ToggleSwitch.ENABLE)) 
{ 
props.setProperty("message_event_uri",QUOTES + (getMessageEventUri() != null ? getMessageEventUri() : "")+ QUOTES); 
} 
if (getSipBridgedLineUriEnable() != null && getSipBridgedLineUriEnable().equals(ToggleSwitch.ENABLE)) 
{ 
props.setProperty("bridged_line_uri",QUOTES + (getBridgedLineUri() != null ? getBridgedLineUri() : "")+ QUOTES); 
props.setProperty("bridged_line_dialog_uri",QUOTES + (getBridgedLineDialogUri() != null ? getBridgedLineDialogUri() : "")+ QUOTES); 
} 
if(enableSipIotParams && getSipIotParametersEnableStatus() != null && getSipIotParametersEnableStatus() == ToggleSwitch.ENABLE){ 

String privacy=""; 
if (getSipIotParametersPrivacy() != null) 
{ 
if(getSipIotParametersPrivacy() == PrivacySettings.ID) 
privacy="id"; 
else if(getSipIotParametersPrivacy() == PrivacySettings.NONE) 
privacy="none"; 
else if(getSipIotParametersPrivacy() == PrivacySettings.NULL) 
privacy=""; 
} 

props.setProperty("Privacy", QUOTES + privacy + QUOTES); 
props.setProperty("Support100Rel", QUOTES + (getSipIotParametersSupport100Rel() != null ? 
getSipIotParametersSupport100Rel().getValue() : ToggleSwitch.DISABLE.getValue())+ QUOTES); 
props.setProperty("Require100Rel", QUOTES + (getSipIotParametersRequire100Rel() != null ? 
getSipIotParametersRequire100Rel().getValue() : ToggleSwitch.DISABLE.getValue())+ QUOTES); 
props.setProperty("Mode", QUOTES + (getSipPreferredIDMode() != null ? 
getSipPreferredIDMode().getValue() : ToggleSwitch.DISABLE.getValue()) + QUOTES); 
props.setProperty("ID", QUOTES + (getSipPreferredID() != null ? getSipPreferredID() : "")+ QUOTES); 
} 

//TODO Check this 
// if (sipSubscriberTemplateEnable != null && sipSubscriberTemplateEnable.equals(ToggleSwitch.ENABLE)) 
// { 
// Properties templProps = subscriberProfile.getProperties(); 
// Enumeration<?> propNames = templProps.propertyNames(); 
// 
// while (propNames.hasMoreElements()) 
// { 
// Object key = propNames.nextElement() ; 
// props.setProperty(key.toString(), templProps.getProperty(key.toString())); 
// } 
// } 
return props; 
} 
} 

Trả lời

10

lẽ nhiều nhất, một trong những thuộc tính của thực thể của bạn không trả lại cùng một giá trị chính xác được đặt bởi hibernate sau khi tải. Bạn có một số nếu báo cáo như xử lý null hoặc bất cứ điều gì như thế này trong một getter hoặc setter?

+0

Dưới đây là mã của tôi để nhận dữ liệu. Xin hãy giúp tôi kiểm tra nó. @ Override công MObjectId findResult (thức MObjectId id, boolean isLocked) { \t \t Tiêu chuẩn c = getSession() createCriteria (Test.class). \t \t c.add (Expression.eq ("objectId", id)); \t \t if (isLocked) { \t \t \t c.setLockMode ("this", LockMode.UPGRADE); \t \t} \t \t Test extension = (Test) c.uniqueResult(); \t \t return (extension! = Null)? new MObjectId ("/ ontPotsSipExtNr =" \t \t \t \t + extension.getId()): null; } – user1525949

+1

Tôi không nghĩ rằng vấn đề nằm trong mã để lấy thực thể từ cơ sở dữ liệu. Nó nằm trong thực thể. –

+0

Tôi chỉ cập nhật lớp học thực thể của mình. Bạn có thể giúp tôi kiểm tra không? – user1525949

0

Khóa nâng cấp. Các đối tượng được nạp trong chế độ khóa này được vật chất hóa bằng cách sử dụng một lựa chọn SQL ... để cập nhật.

LockOption.Upgrade

Nó là giống như select for update trong sql

Nếu bạn không muốn chọn để cập nhật loại bỏ các mã sau và chạy lại

if(isLocked) 
{ 
    c.setLockMode("this", LockMode.UPGRADE); 
} 
+0

Tôi đã cố gắng loại bỏ LockMode.UPGRADE, nhưng vấn đề vẫn chưa được giải quyết. sql vẫn xuất hiện trong nhật ký sql. – user1525949

0

tôi đã cùng một vấn đề nơi một tuyên bố chọn sau khi kích hoạt chọn sẽ kết thúc trong một tuyên bố cập nhật. Điều này xảy ra sau khi tôi chuyển từ websphere 7.0 sang Jboss 7.0.

Đối tượng có thuộc tính String khi chọn được trả về "Y" hoặc "N" để hibernate kích hoạt tư duy cập nhật giá trị của đối tượng đã được thay đổi.

TẤT CẢ tôi đã làm trong tệp hbm.xml của mình, tôi đã đánh dấu thuộc tính đó để cập nhật = "false".

<property name="someStringProperty" type="string" update="false"/> 
Các vấn đề liên quan