小编nih*_*t84的帖子

Hibernate - @ElementCollection - 奇怪的删除/插入行为

@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方法可以解决问题,但它没有改变任何东西.

任何提示都表示赞赏!

java orm hibernate jpa jpa-2.0

39
推荐指数
2
解决办法
4万
查看次数

Maven - 如何处理生成的类

我的困境是我对maven中生成的源文件有疑问.

我正在尝试从WSDL生成一些类,我真的不知道处理生成的源文件的标准方法是什么.

  • 我应该在哪里生成.java源文件?(src/main/java,src/main/generated)
  • 我应该将它们包含在源代码管理下,还是在签出后生成它们
  • 如果我不使用src/main/java文件夹,如何说服Eclipse自动"看到"那些类作为源文件夹?
  • 我真的需要.java文件,还是只需要.class-es?

有关此问题的最佳做法是什么?任何帮助或建议表示赞赏.

谢谢你的回答,马克

eclipse wsdl maven

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

Maven/M2Eclipse一直排除我的资源

我有两个非常烦人的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

eclipse m2eclipse maven

10
推荐指数
1
解决办法
4584
查看次数

JPA 2 - 在CriteriaQuery中使用@ElementCollection

    @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,因为它有点误导.我不想独立查询位置.

java orm jpa criteria-api jpa-2.0

7
推荐指数
1
解决办法
7837
查看次数

CRC-16与0xA001多项式

我想用0xA001多项式计算字节数组的CRC-16校验和.但我真的不知道如何在Java中使用它,以及如何使用给定的多项式.它是某种特殊值(0xA001)吗?你能指点我一个可以为我计算校验和的图书馆,或者给我一些有用的资源吗?

在此先感谢,M.

java checksum crc

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

使用 Dozer 映射值对象

我正在使用 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() 映射新地址的字段。

有没有办法做到这一点?

java mapping dozer

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

标签 统计

java ×4

eclipse ×2

jpa ×2

jpa-2.0 ×2

maven ×2

orm ×2

checksum ×1

crc ×1

criteria-api ×1

dozer ×1

hibernate ×1

m2eclipse ×1

mapping ×1

wsdl ×1