2011-10-10 46 views
0

當然這一次似乎每Here很容易,但我增加了以下我的應用程序上下文...PostgreSQL的錯誤與Spring MVC /休眠工作

「大對象可能無法在自動提交模式下使用」
<property name="dataSource"> 
    <ref bean="dataSource"/> 
</property> 

<property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.autocommit">false</prop> 
     </props> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.gleason.gt.server.model.database.PlayListEntry</value> 
      <value>com.gleason.gt.server.model.database.MusicFile</value> 
     </list> 
    </property> 
</bean> 

我仍然得到同樣的錯誤,有什麼想法嗎?

UPDATE 添加服務/ DAO

@Repository("musicFileDao") 
public class MusicFileDAOImpl extends GroovyTimeHibernateDAOSupport{ 
@Transactional() 
public MusicFile getMusicFile(Integer i){ 
    @SuppressWarnings("unchecked") 
    List<MusicFile> returnValue = (List<MusicFile>)getHibernateTemplate().find("from MusicFile where id=?",i); 
    if(returnValue.size()>0){ 
     return returnValue.get(0); 
    } 
    return null; 
} 
} 
@Service("musicFileService") 
public class MusicFileService { 
@Autowired 
private MusicFileDAOImpl dao; 

@Transactional 
public MusicFile getMusicFile(Integer i){ 
    return dao.getMusicFile(i); 
} 
} 

@Lob 
@Column(name="file") 
private byte[] file; 
+0

與我在其他問題上的評論相同:我確定您不需要LargeObjects,而是使用bytea。 –

+0

請查閱[大型對象]手冊(http://www.postgresql.org/docs/9.1/interactive/largeobjects.html)。他們與其他任何東西都不一樣。 –

+0

感謝您的評論我想我可以使用LargeObject的字節數組?我試圖看看這個鏈接,但有點在我頭上。在其他消息中,我嘗試將其隔離。我拿出OneToOne映射並直接訪問。我仍然得到錯誤,我試圖使它成爲事務性的,等等。所以我應該通過鏈接來研究和承擔它嗎? – Jackie

回答

2

的基本的東西是一個大的對象是自己的事,從BYTEA很大的不同。如果您正在尋找一個字節數組,請改用bytea。

大對象是一個獨立的數據庫實體,它使用不同的接口保存,然後使用對象ID引用。這需要兩個SQL語句,因此它在自動提交模式下不安全。大對象是優選的非常大的領域,原因有二:

  1. 可以兩倍於一個大的對象比你可以一個BYTEA存儲和

  2. 大的物體都配備了流媒體接口,允許尋找抵消等。它們比數據庫屬性更像文件操作。

大對象在正確的地方非常有用,但它們有些不尋常。有機會你想要bytea。