当前位置: 首页 > 面试题库 >

忽略保存休眠实体时的瞬时模式

孔建柏
2023-03-14
问题内容

如何保存休眠实体并忽略(不正确)瞬态模式。

例如:

@Entity
@Table(name="`REQUEST`")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="`receiver`",discriminatorType=DiscriminatorType.STRING,length=20)
public abstract class Request implements UUIDAble{
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    @Transient
    @NotNull
    @Pattern(regexp="^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$")
    private String vaucher;

@Enumerated(EnumType.STRING)
@Column(name="name",nullable=false)
private RequestName name;

public RequestName getName() {
    return name;
}
public void setName(RequestName name) {
    this.name = name;
}

public String getVaucher() {
    return vaucher;
}
public void setVaucher(String vaucher) {
    this.vaucher = vaucher;
}
}

我想保存它:

Request request = new Request();
request.setVaucher("123");
request.setName(RequestName.SYSTEM);

弹簧产生错误:

javax.validation.ConstraintViolationException: validation failed for classes [ru.icb.cpaclick.domain.OperatorCheckRequest] during persist time for groups [javax.validation.groups.Default, ]
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
    at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:159)
    at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)

问题答案:

参见http://docs.jboss.org/hibernate/validator/4.2/reference/en-
US/html_single/#validator-checkconstraints-
orm

。默认情况下,Hibernate(ORM)检查默认验证组的每个约束。因此,您可以将此特定约束放入另一个组中。

有关验证组的说明,请参见http://docs.jboss.org/hibernate/validator/4.2/reference/en-
US/html_single/#validator-usingvalidator-
validationgroups



 类似资料:
  • 问题内容: 如何保存hibernate实体并忽略(不正确)瞬态模式。 例如: 我想保存它: 弹簧产生错误: 问题答案: 参见http://docs.jboss.org/hibernate/validator/4.2/reference/en- US/html_single/#validator-checkconstraints- orm 。默认情况下,Hibernate(ORM)检查默认验证组的每

  • 问题内容: 我们使用Hibernate作为持久层,并具有复杂的对象模型。在不公开实际数据模型的情况下,我想使用以下简单示例来说明问题。 使用HBM定义数据库映射,如下所示: 我必须保存链接到现有的新填充实例。该调用是由Web客户端发起的,因此在我的层上,我获得的Person实例引用到仅包含其ID的实例。 如果我尝试调用,则会引发以下异常: 为避免这种情况,我必须按ID 查找持久对象,然后调用。在这

  • 问题内容: 我该如何决定使用哪个? , , , 。 我阅读了https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/CacheConcurrencyStrategy.html,但没有足够详细地解释。 问题答案: 在Hibernate文档确实在他们定义了很好的工作: 19.2.2。策略:只读 如果您的应用程序需要读取而不是修改持久类

  • 问题内容: 这分别是我的hbm和测试代码。我正在使用Spring的HibernateTemplate。我不使用DAO。使用Spring 2.0.7的Hibernate 2.2.5 血红蛋白 测试 超级测试班 错误 问题答案: 好的,根本原因是我对集合的映射无效。感谢这篇关于复合映射的文章 错误: 正确 完整的映射

  • 我有以下错误, 对象引用未保存的瞬态实例-在刷新之前保存瞬态实例:Nominee;嵌套异常是java.lang.IllegalStateException:org.hibernate.transientObjectException:对象引用未保存的瞬态实例-在刷新前保存瞬态实例:Nominee对象引用未保存的瞬态实例-在刷新前保存瞬态实例 所以在这里,当我获取employee对象时,我想要将指定

  • 问题内容: 我使用Hibernate 4和Spring 3。 我有两个实体。 图书实体 和作者实体 和JSON取决于pom.xml 我的根上下文在这里- … servlet-context.xml 控制器。 在我的DAO中找到findAll: 在调试中,我看到该方法返回2条记录,但是Spring无法将结果转换为JSON并返回406 HTTP错误。怎么了? 我附上我在调试中看到的图像。- http: