是否有一种方法(配置参数)可以更改Hibernate默认行为,以考虑保留域类的非注释字段?
我希望Hibernate默认情况下会考虑非注释字段是暂时的,不应该考虑持久性,而不是努力用@Transient注释所有这些字段。
答案 0 :(得分:1)
根据Hibernate Reference的说法,使用Hibernate注释看起来不太可能:
在注释世界中,每个非静态非瞬态属性 (实体或方法取决于访问类型)实体是 被视为持久性,除非您将其注释为@Transient。不 为您的财产注释相当于 适当的@Basic注释。
当然,使用XML映射,您只能添加将要映射的属性。
答案 1 :(得分:0)
我遇到了同样的问题,如果没有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;
...
我知道这似乎不是最好的,但它仍适用于我。