Hibernate-忽略非注释字段,无需添加@Transient 是否有一种方法(配置参数)更改Hibernate默认行为,以考虑域类的非注释字段将被持久化?

Hibernate-忽略非注释字段,无需添加@Transient 是否有一种方法(配置参数)更改Hibernate默认行为,以考虑域类的非注释字段将被持久化?,hibernate,Hibernate,我希望Hibernate在默认情况下考虑到未注释的字段是暂时的,在持久化时不能考虑这些字段,而不是努力用@transient注释所有这些字段。根据以下内容,Hibernate注释似乎不可能: 在注释世界中,每个非静态非瞬态属性 实体的(字段或方法,取决于访问类型)为 被认为是持久的,除非您将其注释为@Transient。不 为属性创建注释相当于 适当的@Basic注释 当然,对于XML映射,您只能添加将被映射的属性。我也有同样的问题,如果没有一个特定于hibernate的注释来忽略作为业务逻辑一

我希望Hibernate在默认情况下考虑到未注释的字段是暂时的,在持久化时不能考虑这些字段,而不是努力用@transient注释所有这些字段。

根据以下内容,Hibernate注释似乎不可能:

在注释世界中,每个非静态非瞬态属性 实体的(字段或方法,取决于访问类型)为 被认为是持久的,除非您将其注释为@Transient。不 为属性创建注释相当于 适当的@Basic注释


当然,对于XML映射,您只能添加将被映射的属性。

我也有同样的问题,如果没有一个特定于hibernate的注释来忽略作为业务逻辑一部分但与列不对应的字段,那真的是不好的。我不能像我一样使用
@Transient
,否则我必须将DTO从实体类中分离出来,这在我的例子中需要做很多工作

然而,我找到了一个解决方法,我使用
@Formula
注释并在其中给出一个默认值。比如,

@Entity
@Table(name = "users")
public class User implements Serializable {



    @Column(unique = true, insertable = true, updatable = false)
    @Id
    String userId;


    @Formula("0") // @Transient
    Integer nonDBInteger;

...

我知道这似乎不是最好的,但对我来说仍然有效。

真遗憾。我认为在Hibernate代码加载元数据的过程中,添加if/else来激活/取消激活此行为应该不是很困难。无论如何,谢谢你的回答。我把票开着,以防有人想办法这样做。这似乎是不可能的。已创建JIRA问题:。希望这会被认为是公平的。。。