我正在使用实体类观察一个非常奇怪的行为,并使用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)
我在字段上使用观察点调试了进程(应该在访问或修改字段时停止),并且在初始化字段时看到一个修改,但是当我从查找调用获得结果时,该字段为空.
任何人都可以解释一下,为什么会这样?如果数据库中没有嵌入对象字段的数据(除了在查找调用之后手动设置它),我如何确保该字段不为空.
如果我将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) 我正在开发一个包含大量输入表单的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)
这很啰嗦.
这个问题还有更优雅的解决方案吗?
我需要一种方法来折叠复制(用带有id的字符串字段定义)导致solr.我知道这个功能正在下一个版本(1.5)中出现,但我不能等待.使用当前稳定版本1.4删除重复项的最佳方法是什么?
鉴于在我的情况下找到重复项非常容易(比较一个字符串字段),如果它是一个Filter,我应该覆盖现有的SearchComponent还是编写一个新的Component,还是使用像carrot2这样的外部库?
总体结果计数应反映缩短的结果.