访问自定义Hibernate BasicType中的实体标识符

qjp7pelc  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(145)

有没有一种方法可以从自定义的Hibernate BasicType访问实体标识符。
我们的想法是使用实体标识符来计算这个基本类型,但为此,我需要从基本类型本身和BasicJavaDescriptor访问标识符。
有关具体示例,请参见下面的代码部分

public class MyType extends AbstractStandardBasicType<MyCustomType> {
    
    @Override
    public void nullSafeSet(PreparedStatement st, Object value, int index, boolean[] settable, SharedSessionContractImplementor session) throws HibernateException {
        // how to access the entity identifier of the entity holding that field? Needed to compute the data of the custom type.
    }
    // other methods
}

public class MyDescriptor extends AbstractTypeDescriptor<MyCustomType> {
    
    @Override
    public <X> MyCustomType wrap(X value, WrapperOptions options) {
        // how to access the entity identifier of the entity holding that field? Needed to compute the data of the custom type.
    }
    // other methods
}

Hibernate版本:5.6.15.Final
关于自定义类型的文档非常少。
在这个问题上,任何帮助都是受欢迎的。

umuewwlo

umuewwlo1#

我不明白你为什么要在这里扩展AbstractStandardBasicType。那不是扩展点。
看起来你应该实现UserType。你要实现的方法之一是:

J nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner)

owner是拥有实体,它将包含id。

相关问题