Java Hibernate رسم الخرائط الاستثناء! (لا يمكن تحديد نوع: java.util.map)

StackOverflow https://stackoverflow.com/questions/4324839

سؤال

لقد صنعت فصلًا مع اسم فيلم مع حقول فاشلة:

    @Id
@GeneratedValue
private Long id;
private String name;
@ElementCollection(targetClass = String.class)
private Map<String, String> properties;
private Double rate;
private Integer votersCount;
private Date releaseDate;
private Integer runtime;
@ManyToMany
@JoinTable(name = "movie_director")
@IndexColumn(name = "directorIndex")
private List<Person> directors;
@ManyToMany
@JoinTable(name = "movie_writer")
@IndexColumn(name = "writerIndex")
private List<Person> writers;
@OneToMany
@IndexColumn(name = "roleIndex")
private List<MovieRole> movieRoles;
@ManyToMany
@JoinTable(name = "movie_genre")
@IndexColumn(name = "genreIndex")
private List<Genre> genres;

كما ترون ، لقد استخدمت تعليقات السبات والكائن هو الفول. ولكن عندما أحاول فتح جلسة السبات الخاصة بي مع الكود التالي ...

session = HibernateSessionFactory.getSessionFactory().openSession();

واجهت مشكلة فيما يتعلق بتعيين خريطة java.util.map. هنا تتبع مكدس الاستثناء:

org.hibernate.MappingException: Could not determine type for: java.util.Map, for columns: [org.hibernate.mapping.Column(properties)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
at org.hibernate.mapping.Property.isValid(Property.java:185)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:410)
at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1099)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284)
at main.HibernateSessionFactory.getSessionFactory(HibernateSessionFactory.java:29)
at main.MainClass.main(MainClass.java:26)

أنا جديد على السبات ولا أعرف بالضبط ما يحدث ... الرجاء مساعدتي!

هل كانت مفيدة؟

المحلول

ذلك لأنه يجب عليك استخدام بعض تطبيقات JPA2! كان هذا الرجل نفس المشكلة

نصائح أخرى

أواجه أيضًا نفس المشكلة. لقد تأخرت ، لكنني أعتقد أنها ستساعد الآخرين. use @mapkeycolumn. هنا رمزتي البسيطة

@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();

لا ينبغي أن تكون الخصائص فقط List<String> يكتب؟

يبدو أن الالتباس السبات هو نفسه الخاص بي وهو ، لماذا هي الخريطة المناسبة بدلاً من القائمة؟ ما الذي تحاول أن تفعله هناك بالضبط؟

آه أرى ، إنه. لا أعتقد أنه يمكنك رسم خريطة بدائية إلا إذا كنت تستخدم أحدث جرة. https://forum.hibernate.org/viewtopic.php؟t=955308. تحقق من هذا الرابط. هل يمكنك عمل فصل يسمى كخصائص مع المفتاح والقيمة ثم استخدامه؟ واجهت مشكلة مماثلة واضطررت إلى استخدام هذا النهج.

هل لديك كل من getter و setter للممتلكات؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top