db2 带有clob列的JPQL SELECT Distinct查询在WAS7上运行良好,但在WAS9上却不行

n3h0vuf2  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(164)

我使用的是基于Spring 3.0的JPA2.0

@Entity
@Table(name = "MY_TABLE", schema = "DB2XXXX")
public class MyTable  implements java.io.Serializable,Comparable<MyTable> {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "MY_TABLE_ID")
    private BigInteger myTableId;

    @Column(name = "FREETEXT")
    private String freetext;

    public MyTable() {
    }

    public MyTable(BigInteger myTableId,String freetext) {
        super();
        this.myTableId = myTableId;
        this.freetext = freetext
    }

    public BigInteger getMyTableId() {
        return myTableId;
    }
    public void setMyTableId(myTableId) {
        this.myTableId = myTableId;
    }
    public String getFreetext() {
        return freetext;
    }
    public void setFreetext(String freetext) {
        this.freetext = freetext;
    }
}

自由文本是clob列

第一个
在WAS 9中调用查询方法时Db2错误代码-134:在同时指定DISTINCT的SELECT列表中不允许使用长度属性大于255字节的字符串值。但此查询在WAS 7上可以正常工作
[21[Eclipse链接-4002](Eclipse持久性服务- 2.6.8.WAS-v20181218- 0accd 7 f):内部异常错误:异常错误:DB2 SQL错误:SQLCODE= -134,SQLSTATE=42907,SQLERRMC=备注,驱动程序=4.25.13错误代码:-134
内部异常错误:异常错误:DB2 SQL错误:SQLCODE= -134,SQLSTATE=42907,SQLERRMC=备注,驱动程序=4.25.13错误代码:-134

vql8enpb

vql8enpb1#

如果freetext是一个Clob列,试着用@Lob正确地注解它。
这个错误可能与JPA提供者在WAS7和9之间的变化有关(以前是OpenJPA)。如果你不在乎JPA 2.1,你可以切换回2.0 OpenJPA,例如使用wsadmin

wsadmin>AdminTask.modifyJPASpecLevel('[-node myNode -server server1 -specLevel 2.0]')  
CWWJP8813I: The JPA specification compliance level for Server server1 has been successfully set to JPA 2.0.

有关详细信息,请参阅以下链接:https://www.ibm.com/docs/en/was/9.0.5?topic=applications-identifying-modifying-jpa-specification-level

相关问题