Java JPA,如何插入数组?

Java JPA,如何插入数组?,java,postgresql,hibernate,jpa,Java,Postgresql,Hibernate,Jpa,我有一个对象MyObject,如: @Entity @Table(name = "mytable") public class MyObject{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(name="title") private String title; @Column(name="users")//, columnDefinit

我有一个对象MyObject,如:

@Entity
@Table(name = "mytable")
public class MyObject{
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

   @Column(name="title")
   private String title; 

   @Column(name="users")//, columnDefinition="bigint[]")
   @ElementCollection   
   private List<Long> users = new ArrayList<>();

   //constructor, getters and setters
} 
当我试图用POST创建一个类似{“id”:0,“title”:“dyud u”,“users”:[334335]}的MyObject时,我得到一个错误:

org.hibernate.engine.jdbc.spi.SqlExceptionHelper:SQL错误:0, SQLState:42804错误 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper:ERREUR:la colonne «users»est de type bigint[]mais l'表达式est de type bigint

当用户为null或空,或者使用sql命令手动创建时,我没有问题:

INSERT INTO mytable ("title","users") VALUES ('t1','{334,335}');
如何操作?

添加到项目中,并将字段更改为:

@Column(name="users", columnDefinition="bigint array")
private Long[] users;

这将适用于6.0之前的Hibernate版本5.2+,然后需要更新库。

否则,它可以在没有此依赖项的情况下工作:

@Entity
@Table(name="mytable")
@NamedQueries({
   @NamedQuery(name="findAll",query = "SELECT n FROM mytable n"),
   @NamedQuery(name="getForUser", query = "SELECT n FROM mytable n WHERE :user MEMBER OF n.users")
 })
 public class MyObject{
   @Id
   @GeneratedValue(startegy = GenerationType.IDENTITY)
   private long id;

   @Column(name="title")
   private String title;

   @ElementCollection
   private Set<Long> users = new HashSet<>();

   //constructor, getters and setters
}
@实体
@表(name=“mytable”)
@命名查询({
@NamedQuery(name=“findAll”,query=“从mytable n中选择n”),
@NamedQuery(name=“getForUser”,query=“从mytable n中选择n,其中:n.users的用户成员”)
})
公共类MyObject{
@身份证
@GeneratedValue(startegy=GenerationType.IDENTITY)
私人长id;
@列(name=“title”)
私有字符串标题;
@元素集合
private Set users=new HashSet();
//构造函数、getter和setter
}
它添加了一个表myobject\u users,其中有myobject\u id和users列。创建一个新的myobject没有问题。

@Entity
@Table(name="mytable")
@NamedQueries({
   @NamedQuery(name="findAll",query = "SELECT n FROM mytable n"),
   @NamedQuery(name="getForUser", query = "SELECT n FROM mytable n WHERE :user MEMBER OF n.users")
 })
 public class MyObject{
   @Id
   @GeneratedValue(startegy = GenerationType.IDENTITY)
   private long id;

   @Column(name="title")
   private String title;

   @ElementCollection
   private Set<Long> users = new HashSet<>();

   //constructor, getters and setters
}