Oracle
 sql >> база данни >  >> RDS >> Oracle

Хибернация> CLOB> Oracle :(

Благодаря на non sequitor за цялата помощ. Това работи и смятам, че ще сложа всички части тук за бъдещи справки. Независимо от всички твърдения за надграждане на драйверите и всичко ще работи, нищо от това не ми свърши работа. В крайна сметка трябваше да внедря 'org.hibernate.usertype.UserType', кръстих го по същия начин като всички примери в мрежата StringClobType. Запазете за някои импортирания. Използвах примера от Използване на Clobs/Blobs с Oracle и Hibernate. Що се отнася до мен, игнорирайте твърдението „пазете се“.

Имаше една промяна, която трябваше да направя, за да накарам сливанията да работят. Някои от методите не бяха внедрени в предоставения примерен код. Eclipse го оправи вместо мен, като ги изтри. Страхотно, но методът за замяна трябва действително да бъде приложен или всички сливания ще презапишат данните с нула. Ето моята реализация:

public Object replace(Object newValue, Object existingValue, Object arg2)throws HibernateException {
    return newValue;
}

Няма да дублирам реализацията на класа тук, отидете на горната връзка, за да я видите. Използвах кода в третото сиво поле. След това в горната част на класа pojo, в който исках да го използвам, добавих следното след импортирането

...  
import org.hibernate.annotations.Type;  
import org.hibernate.annotations.TypeDefs;  
import org.hibernate.annotations.TypeDef;  

@TypeDefs({  
    @TypeDef(  
        name="clob",  
        typeClass = foo.StringClobType.class  
    )  
})  
@Entity  
@Table(name="EA_COMMENTS")  
public class Comment extends SWDataObject implements JSONString, Serializable {  
...  
}   

След това, за да използвам новия UserType, добавих анотацията към моя getter:

@Type(type="clob")
@Column(name="COMMENT_DOC")
public String getDocument(){
    return get("Document");
}

Нямах нужда от анотацията @Lob.
В моя persistence.xml декларацията за persistence-unit завършваше така:

<persistence-unit name="###" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.archive.autodetection" value="class"/> 
        <property name="hibernate.connection.password" value="###" />
        <property name="hibernate.connection.username" value="###" />
        <property name="hibernate.connection.url" value="jdbc:oracle:thin:@server.something.com:1521:###"/>
        <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
        <property name="hibernate.default_schema" value="###" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect" />
        <property name="hibernate.c3p0.min_size" value="5" />
        <property name="hibernate.c3p0.max_size" value="100" />
        <property name="hibernate.c3p0.timeout" value="300" />
        <property name="hibernate.c3p0.max_statements" value="50" />
        <property name="hibernate.c3p0.idle_test period" value="3000" />
        <property name="hibernate.c3p0.idle_connection_test_period" value="300" />
        <property name="show_sql" value="false" />
        <property name="format_sql" value="false" />
        <property name="use_sql_comments" value="false" />
        <property name="hibernate.jdbc.batch_size" value="0"/>
    </properties>
</persistence-unit>

SetBigStringTryClob никога не е работил за мен и не е бил необходим за тази окончателна реализация.

Моят урок е, че в крайна сметка вероятно е по-добре да се присъедините, отколкото да се биете. Щеше да ми спести три дни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво може да причини периодични грешки ORA-12519 (TNS:не е намерен подходящ манипулатор).

  2. Oracle позволява ли опцията за четене без ангажимент?

  3. Възможно ли е да се препратят към имена на колони чрез свързващи променливи в Oracle?

  4. Как да напиша параметризирана заявка за вмъкване на оракул?

  5. Как да форматирате месеца с римски цифри в Oracle