Java 持久化列表时创建唯一字符串表时出现问题<;字符串>;
假设我有一个实体:Java 持久化列表时创建唯一字符串表时出现问题<;字符串>;,java,jpa,eclipselink,java-ee-6,Java,Jpa,Eclipselink,Java Ee 6,假设我有一个实体: @Entity public class AnEntity implements Serializable{ @ElementCollection private List<String> strings = new Vector<String>(); // other stuff } 但正如我所说的,这只将字节放入一个实体字符串中。我无法想象这是一种“正确”的方法。不要使用向量,而是使用哈希集 或许你也应该这样做: private Se
@Entity
public class AnEntity implements Serializable{
@ElementCollection
private List<String> strings = new Vector<String>();
// other stuff
}
但正如我所说的,这只将字节放入一个实体字符串中。我无法想象这是一种“正确”的方法。不要使用
向量
,而是使用哈希集
或许你也应该这样做:
private Set<String> strings = new HashSet<String>();
private Set strings=new HashSet();
不要使用向量
,而是使用哈希集
或许你也应该这样做:
private Set<String> strings = new HashSet<String>();
private Set strings=new HashSet();
因此,您希望创建一个映射,其中每个实体都有许多字符串,每个字符串可以属于许多实体。然后,您应该使用@manytomy
,因为这是一种多对多关系。因此,您需要创建一个映射,其中每个AnEntity
都有许多字符串,每个字符串可以属于许多AnEntity。然后您应该使用@manytomy
,因为这是一个多对多关系。如果不起作用,持久化列表仍然有许多重复项。需要明确的是,实体本身的列表中不会有重复的字符串,而是包含所有重复项的表本身。要明确的是,实体本身的列表中不会有重复的字符串,它是包含所有重复项的表本身。我也这么认为,但我仍然在ANENTITY_字符串表中有许多重复项。这可以很容易地用SQL完成,但我正试图用JPA2.0来构建它,以帮助提高数据库的可移植性。@J_Y__C:我看不出在SQL中没有重复项是如何完成的。您将在字符串表(对于一对多关系)或联接表(对于多对多关系)中有重复项,我也这么认为,但最终在ANENTITY_字符串表中仍然有许多重复项。这可以很容易地用SQL完成,但我正试图用JPA2.0来构建它,以帮助提高数据库的可移植性。@J_Y__C:我看不出在SQL中没有重复项是如何完成的。您将在字符串表(对于一对多关系)或联接表(对于多对多关系)中有重复项
private Set<String> strings = new HashSet<String>();