2013-08-13 6 views
10

C'è qualcuno che mi aiuti in questo caso. Sto usando l'ibernazione per selezionare i dati da db, ma quando controllo da log di debug sql. Vedo sempre l'aggiornamento sql stampato dopo aver usato "select" sql per ottenere i dati dal DB.Perché l'ibernazione chiama sempre "aggiornamento" dopo aver usato l'istruzione "select" in 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 = ? 

Grazie

Edit: Codice per ottenere i dati:

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

E classe entità, come di seguito:

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

risposta

10

Molto probabilmente, una delle proprietà della vostra entità non restituisce lo stesso identico valore impostato dall'ibernazione dopo il caricamento. Avete alcune affermazioni come la gestione nulla o qualcosa di simile in un getter o setter?

+0

Il seguente è il mio codice per ottenere dati. Per favore aiutami a controllarlo. @Override pubblico MObjectId findResult (id finale MObjectId, booleano È bloccato) { \t \t criteri C = getSession() createCriteria (Test.class).; \t \t c.add (Expression.eq ("objectId", id)); \t \t se (È bloccato) { \t \t \t c.setLockMode ("questo", LockMode.UPGRADE); \t \t} \t \t Estensione di prova = (Test) c.uniqueResult(); \t \t return (extension! = Null)? new MObjectId ("/ ontPotsSipExtNr =" \t \t \t \t + extension.getId()): null; } – user1525949

+1

Non penso che il problema sia nel codice per ottenere l'entità dal database. È nell'entità stessa. –

+0

Ho appena aggiornato la mia classe di entità. Potresti per favore aiutarmi a controllare? – user1525949

0

Un blocco di aggiornamento. Gli oggetti caricati in questa modalità di blocco vengono materializzati utilizzando una selezione SQL ... per l'aggiornamento.

LockOption.Upgrade

E 'uguale a select for update in SQL

Se non volete selezionare per l'aggiornamento rimuovere il seguente codice ed eseguire nuovamente

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

Ho già provato a rimuovere LockMode.UPGRADE, ma il problema non è stato ancora risolto. sql appare ancora in sql log. – user1525949

0

Ho avuto lo stesso problema in cui un'istruzione select dopo l'attivazione, la selezione termina con una dichiarazione di aggiornamento. Questo è successo dopo essere passato da websphere 7.0 a Jboss 7.0.

L'oggetto aveva una proprietà String in cui come select stava restituendo "Y" o "N" così hibernate ha attivato un aggiornamento pensando che il valore dell'oggetto è stato modificato.

TUTTO quello che ho fatto era nel mio hbm.xml ho contrassegnato tale proprietà per update = "false".

<property name="someStringProperty" type="string" update="false"/> 
Problemi correlati