sql >> データベース >  >> RDS >> PostgreSQL

HibernateでPostgreSQLLTREE列をマッピングするときにエラーが発生する

    次のように、JavaでカスタムLTreeTypeクラスを実装します。

    public class LTreeType implements UserType {
    
        @Override
        public int[] sqlTypes() {
            return  new int[] {Types.OTHER};
        }
    
        @SuppressWarnings("rawtypes")
        @Override
        public Class returnedClass() {
            return String.class;
        }
    
        @Override
        public boolean equals(Object x, Object y) throws HibernateException {
            return x.equals(y);
        }
    
        @Override
        public int hashCode(Object x) throws HibernateException {
            return x.hashCode();
        }
    
        @Override
        public Object nullSafeGet(ResultSet rs, String[] names, Object owner)
                throws HibernateException, SQLException {
            return rs.getString(names[0]);
        }
    
        @Override
        public void nullSafeSet(PreparedStatement st, Object value, int index)
                throws HibernateException, SQLException {
            st.setObject(index, value, Types.OTHER);
        }
    
        @Override
        public Object deepCopy(Object value) throws HibernateException {
            return new String((String)value);
        }
    
        @Override
        public boolean isMutable() {
            return false;
        }
    
        @Override
        public Serializable disassemble(Object value) throws HibernateException {
            return (Serializable)value;
        }
    
        @Override
        public Object assemble(Serializable cached, Object owner)
                throws HibernateException {
            return cached;
        }
    
        @Override
        public Object replace(Object original, Object target, Object owner)
                throws HibernateException {
            // TODO Auto-generated method stub
            return deepCopy(original);
        }
    
    }
    

    そして、次のようにEntityクラスに注釈を付けます。

        @Column(name = "path", nullable = false, columnDefinition = "ltree")
        @Type(type = "LTreeType")
        private String path;
    


    1. OracleのSQLクエリから返されるレコードを制限する

    2. SQLServerの宛先とOLEDBの宛先

    3. Access2016で空のデータベースを作成する方法

    4. SQL Serverの無効なオブジェクト名-ただし、テーブルはSSMSテーブルリストにリストされています