java - 如果找不到实体,则为 JPA 默认值

标签 java hibernate jpa annotations many-to-one

如果找不到实体(仅当找不到实体时 - EntityNotFound 异常),是否可以设置一些(默认)值?如果DB中有空值,则该字段必须为空。 例如,我有一个实体 First 与一个实体 Second 有关系:

class First {
   ...
   @ManyToOne @JoinColumn(name="second", nullable=true)
   @NotFound(action = NotFoundAction.IGNORE)
   Second second;
   ...
}

如果数据库(表“First”)中的列“second”为空,则 first.second 必须为空。如果 DB(表“First”)中的列“second”为 5(second id = 5)并且表“Second”中不存在 id == 5 的行,则 firts.second 应该是某个默认值(实体) ,例如 id = 1 的实体 Second 或 new Second(params);

最佳答案

我希望您通过成对的 get/set 方法访问您的字段。只需在 getter 中创建空检查逻辑即可:

public Second getRelated(){
    if( second == null )
        return defaultValue;
}

另请参阅此答案 https://stackoverflow.com/a/757330/149818

关于java - 如果找不到实体,则为 JPA 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32436767/

相关文章:

java - 在 DataStore JPA java-App 引擎中加入查询

java - 权限拒绝 : opening provider that is not exported from UID 1000

java - 如何在 MacOS 上嗅探 Java 小程序 HTTP 流量?

java - 将 Infinispan 配置为 Hibernate 的远程二级缓存

java - Spring引导+ hibernate 搜索: entityManagerFactory dependency error

java - Hibernate - 字段 A 或 B 可以为空,但 A 或 B 之一不能为空

java - 当对 @Id 使用继承表生成器时,DataNucleus (JPA) 是否支持每个实体序列?

java - 从 JXDatePicker 获取时间

c# - 对于这个简单的OOAD问题,哪种设计最优雅?

java - Hibernate:顺序获取行的最佳方式