@Entity
public class Person {
@ElementCollection
@CollectionTable(name = "PERSON_LOCATIONS", joinColumns = @JoinColumn(name = "PERSON_ID"))
private List<Location> locations;
[...]
}
@Embeddable
public class Location {
[...]
}
Run Code Online (Sandbox Code Playgroud)
给定以下类结构,当我尝试将新位置添加到Person的位置列表时,它总是会导致以下SQL查询:
DELETE FROM PERSON_LOCATIONS WHERE PERSON_ID = :idOfPerson
Run Code Online (Sandbox Code Playgroud)
和
A lotsa' inserts into the PERSON_LOCATIONS table
Run Code Online (Sandbox Code Playgroud)
Hibernate(3.5.x/JPA 2)删除给定Person的所有相关记录,并重新插入所有以前的记录,再加上新记录.
我认为Location上的equals/hashcode方法可以解决问题,但它没有改变任何东西.
任何提示都表示赞赏!
我的困境是我对maven中生成的源文件有疑问.
我正在尝试从WSDL生成一些类,我真的不知道处理生成的源文件的标准方法是什么.
有关此问题的最佳做法是什么?任何帮助或建议表示赞赏.
谢谢你的回答,马克
我有两个非常烦人的Maven-Eclipse集成问题,它不时地从构建路径中排除src/main/resources和src/test/resources中的所有资源.
如果我检查"属性>> Java构建路径>>源"我可以看到这两个文件夹有"排除:**".
通过单击排除项中的"删除"可以轻松解决问题,但这确实非常令人沮丧.
项目设置非常简单,它有一些模块和子模块,但没什么特别的.我的pom.xmls中没有关于资源,eclipse或其他任何配置选项(也许我应该这样做).
另一个问题是Eclipse不断在"目标"目录中报告警告(在"问题"视图中),它首先不应该给出一个该死的.
Ps:Springsource Tool Suite 2.7.0.RELEASE,Eclipse的Maven Integration 0.12.1.20110112,Maven 2.2.1
@Entity
public class Person {
@ElementCollection
private List<Location> locations;
[...]
}
@Embeddable
public class Location {
private Integer dummy;
private Date creationDate;
[...]
}
Run Code Online (Sandbox Code Playgroud)
鉴于以下结构,我想执行以下SQL的HQL或CriteriaQuery等价物:
SELECT
l.*
FROM
Location l
INNER JOIN
Person p ON (p.id = l.person_id)
WHERE
p.id = ? AND l.creationDate > ?
Run Code Online (Sandbox Code Playgroud)
我想找回与给定人员相关联的位置列表,其创建日期在给定人员之后.
提前致谢!
标记
编辑***:我编辑了SQL,因为它有点误导.我不想独立查询位置.
我想用0xA001多项式计算字节数组的CRC-16校验和.但我真的不知道如何在Java中使用它,以及如何使用给定的多项式.它是某种特殊值(0xA001)吗?你能指点我一个可以为我计算校验和的图书馆,或者给我一些有用的资源吗?
在此先感谢,M.
我正在使用 Dozer 将我的 DTO 映射到 JPA 实体。
其中一个用例是一个已经存在的实体的DTO表示到达一个WS,然后我使用JPA找到实体,并使用推土机的DTO映射在使用中发现实体地图(源,目的地)的映射方式(不是map(source, destinationClass))。
我的实体(例如地址)上有一些值对象(具有经典的不可变值对象语义)作为 @Embeddables。问题是,我希望推土机在将其设置为例如:Employee 对象时始终创建一个新的Address 实例,而不是映射到已经存在的 Address 实例。
因此,对于以下课程:
public class Employee {
private Address address;
public void setAddress(Address address) {
this.address = address;
}
public Address getAddress() {
return this.address;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望推土机总是使用新的地址实例调用 setAddress(),而不是尝试使用 getAddress() 映射新地址的字段。
有没有办法做到这一点?