3

问题

我发现在调用StatelessSession#insert()时,hibernate 的批处理不适用于以下两个类。(即为每个调用创建了准备好的语句)。

父实体

@Entity
@Table(name = "950_ATC_LOG")
@DiscriminatorColumn(name = "TYPE", length = 1)
@DiscriminatorValue("C")
public class AtcLog {

@Id
@Column(name = "ATC_LOG_ID")
private long id;

// other memebers here...
}

子实体

@Entity
@DiscriminatorValue("A")
public class AllocationLog extends AtcLog {

// some members here
}

但是在我将实体更改为以下内容后,hibernate 开始按预期使用批处理:

父实体 - 新

@MappedSuperclass
public abstract class AbstractLog {

@Id
@Column(name = "ATC_LOG_ID")
private long id;

// some members here
}

子实体 - 新

@Entity
@Table(name = "950_ATC_LOG")
public class AtcLog extends AbstractLog {

@Column(name = "TYPE", length = 1, nullable = false)
private char type;

// some members here
}

问题

单表继承是否禁用休眠批处理?该文档仅说应使用“身份标识符生成器”禁用它,但我明确设置了 ID。我没有找到任何其他关于此类问题的参考。

4

0 回答 0