小编Dom*_*nik的帖子

奇怪的JPA行为,初始化字段为空

我正在使用实体类观察一个非常奇怪的行为,并使用JPA(hibernate entitymanager 3.3.1.ga)加载此类的对象.Class有一个(嵌入)字段,在声明中初始化.该字段的setter实现了一个空检查(即在设置null值时会抛出异常).

...
@Entity
public class Participant extends BaseEntity implements Comparable<Participant> {
   ...
    @Embedded
 private AmsData amsData = new AmsData();

 public void setAmsData(AmsData amsData) {
  Checks.verifyArgNotNull(amsData, "amsdata");
  this.amsData = amsData;
 }
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用JPA获取此对象时,如果db中没有嵌入对象中指定的字段的数据,则该字段为null.

...
public class ParticipantJpaDao implements ParticipantDao {
 @PersistenceContext
 private EntityManager em;

 @Override
 public Participant getParticipant(Long id) {
  return em.find(Participant.class, id);
 }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我在字段上使用观察点调试了进程(应该在访问或修改字段时停止),并且在初始化字段时看到一个修改,但是当我从查找调用获得结果时,该字段为空.

任何人都可以解释一下,为什么会这样?如果数据库中没有嵌入对象字段的数据(除了在查找调用之后手动设置它),我如何确保该字段不为空.

java hibernate jpa

17
推荐指数
1
解决办法
1万
查看次数

在maven-verify中没有自动检测JPA实体

如果我将persistence.xml放在src/test/META-INF文件夹中,则自动检测实体不能与maven-verify一起使用.当persistence.xml位于src/main/META-INF文件夹中时,它可以正常工作.

在两种情况下都可以在eclipse中运行测试.

当persistence.xml位于src/test文件夹中时,有没有办法让autodetection用于maven-verify?

persistence.xml中:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

  <persistence-unit name="Unit" transaction-type="RESOURCE_LOCAL">
    <properties>
      <!-- Scan for annotated classes and Hibernate mapping XML files -->
      <property name="hibernate.archive.autodetection" value="class" />
    </properties>
  </persistence-unit>

</persistence>
Run Code Online (Sandbox Code Playgroud)

java jpa build maven

9
推荐指数
1
解决办法
8023
查看次数

如何在表单,验证和ddl中重用字段长度?

我正在开发一个包含大量输入表单的Spring应用程序.我想在UI表单,验证和JPA注释中重用字段长度.有没有一种优雅的方法来解决这个问题.我的解决方案是,使用常量来声明长度:

public class Person
{
   public static final int FIRSTNAME_LENGTH = 25;

   @Column(length=FIRSTNAME_LENGTH)
   private String firstName;

   ...
}
Run Code Online (Sandbox Code Playgroud)

然后在Validator和Jsp中重用常量

...

<form:input path="firstName" 
    maxlength="<%= Integer.toString(Person.FIRSTNAME_LENGTH) %>"/>

...
Run Code Online (Sandbox Code Playgroud)

这很啰嗦.

这个问题还有更优雅的解决方案吗?

java annotations jpa spring-mvc

6
推荐指数
1
解决办法
3043
查看次数

SOLR 1.4中现场倒塌的最佳实践

我需要一种方法来折叠复制(用带有id的字符串字段定义)导致solr.我知道这个功能正在下一个版本(1.5)中出现,但我不能等待.使用当前稳定版本1.4删除重复项的最佳方法是什么?

鉴于在我的情况下找到重复项非常容易(比较一个字符串字段),如果它是一个Filter,我应该覆盖现有的SearchComponent还是编写一个新的Component,还是使用像carrot2这样的外部库?

总体结果计数应反映缩短的结果.

solr

5
推荐指数
1
解决办法
2370
查看次数

标签 统计

java ×3

jpa ×3

annotations ×1

build ×1

hibernate ×1

maven ×1

solr ×1

spring-mvc ×1