Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ebean, java, не может найти метод <init>() / 12 сообщений из 12, страница 1 из 1
18.02.2013, 14:55:01
    #38155728
NecroArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Здравствуйте. Использую ebean, пытаюсь сделать составной первичный ключ для таблице связки. Она должна связывать таблицы BreedFeature и Color.
BreedFeature:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
package model;

import javax.persistence.*;

import com.avaje.ebean.validation.Length;

@Entity
@Table (name = "breed_feature") 
public class BreedFeature {

    @Id
    @Column(name="id")
    private Long id;

    @Column(name="name")
    @Length(max=6)
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int hashCode() {
        return (int) id.hashCode();
    }

    public boolean equals(Object obj) {
        if (obj == this) return true;
        if (obj == null) return false;
        if (!(obj instanceof BreedFeature)) return false;
        BreedFeature pk = (BreedFeature) obj;
        return pk.id == id && pk.name == name;
    }
}



Color:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
package model;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;

import com.avaje.ebean.validation.Length;

@Entity
@Table (name = "color")
public class Color {

    @Id
    @Column(name="id")
    private Long id;

    @Column(name="name")
    @Length(max=10)
    String value;

    public void setId (Long newId) {
        this.id = newId;
    }
    public Long getId() {
        return id;
    }

    public String getValue() {
        return value;
    }

    public void setName(String name) {
        this.value = name;
    }

    public void main (String []arg) {
    }
}



И самый интересный класс с составным ключом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
import javax.persistence.*;

/**
 * @author Artyom
 *
 */
@Entity
@Table(name="body_color")  
public class BodyColor {

    @EmbeddedId
    private BodyColorPK breedFeatureId;

    @MapsId(value="breedFeatureId")
    @ManyToOne
    @JoinColumn(name = "breed_feature_id", referencedColumnName = "id")
    private BreedFeature breedFeature;

    @MapsId(value="colorId")
    @ManyToOne
    @JoinColumn(name = "color_id", referencedColumnName = "id")
    private Color color;


    @Embeddable
    public class BodyColorPK implements Serializable {

        private static final long serialVersionUID = 972450558222049731L;

        @Basic
        private long breedFeatureId;

        @Basic
        private long colorId;

        public BodyColorPK() {      
        }

        public BodyColorPK(Long breed_feature_id, Long color_id) {
            this.breedFeatureId = breed_feature_id;
            this.colorId = color_id;
        }

        public Long getBreedFeatureId () {
            return this.breedFeatureId;
        }

        public void setBreedFeatureId (Long newBreedFeatureId) {
            this.breedFeatureId = newBreedFeatureId;
        }
        @Override
        public int hashCode() {
            return (int) (breedFeatureId + colorId);
        }
        @Override
        public boolean equals(Object obj) {
            if (obj == this) return true;
            if (obj == null) return false;
            if (!(obj instanceof BodyColorPK)) return false;
            BodyColorPK pk = (BodyColorPK) obj;
            return pk.breedFeatureId == breedFeatureId && pk.colorId == colorId;
        }
    }

}



Когда пытаюсь сохранить новый объект:
Код: java
1.
2.
3.
4.
BreedFeature e = new BreedFeature();
e.setName("test");
// will insert
Ebean.save(e);


Вылетает эксепшен: java.lang.RuntimeException: java.lang.NoSuchMethodException: model.BodyColor$BodyColorPK.<init>()
Говорят, что нужен конструктор без параметров, но, как видите, он уже есть. Не подскажите, в чём причина?
...
Рейтинг: 0 / 0
18.02.2013, 15:23:36
    #38155796
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Шо за Ebean? Может он внутренние классы не умеет?
...
Рейтинг: 0 / 0
18.02.2013, 15:37:13
    #38155833
NecroArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Blazkowicz,

Ebean: http://www.avaje.org/
Внутренние умеет - та же ошибка при внешних.
...
Рейтинг: 0 / 0
18.02.2013, 15:40:33
    #38155845
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Попробуйте убрать второй конструктор.
...
Рейтинг: 0 / 0
18.02.2013, 15:42:46
    #38155851
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
А покажите stacktrace, может вы все же классы забыли перекомпилировать?
...
Рейтинг: 0 / 0
18.02.2013, 16:53:58
    #38156045
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
NecroArt,

не смотря на ошибку, разве BodyColor не должен иметь дефолтный конструктор?
...
Рейтинг: 0 / 0
18.02.2013, 17:00:15
    #38156065
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
BodyColorPK, кстати не static, поэтому не может быть создан вне контекста экземпляра внешнего класса. Отсюда и ошибка.
...
Рейтинг: 0 / 0
18.02.2013, 17:04:11
    #38156085
NecroArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Blazkowicz,

О господи, большое спасибо - сделал статик, ошибка уже другая... Но это я уже как-то решал. Большое спасибо, бился уйму времени. Заодно постараюсь осознать, почему он не может быть создан вне экземпляра внешнего класса.
...
Рейтинг: 0 / 0
18.02.2013, 17:04:38
    #38156090
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
BlazkowiczBodyColorPK, кстати не static, поэтому не может быть создан вне контекста экземпляра внешнего класса. Отсюда и ошибка.

говорит же и даже когда выносит класс - ошибка...
...
Рейтинг: 0 / 0
18.02.2013, 17:14:10
    #38156114
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
Озверинговорит же и даже когда выносит класс - ошибка...
Мало ли кто чего говорит, а код и ошибку не показывает.
...
Рейтинг: 0 / 0
18.02.2013, 17:15:50
    #38156120
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
NecroArtО господи, большое спасибо - сделал статик, ошибка уже другая... Но это я уже как-то решал. Большое спасибо, бился уйму времени. Заодно постараюсь осознать, почему он не может быть создан вне экземпляра внешнего класса.
Не статические член класса - поле или метод, можно вызвать только у объекта. Не статический класс, точно так же привязан только к объекту.
http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
...
Рейтинг: 0 / 0
18.02.2013, 17:21:00
    #38156133
NecroArt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ebean, java, не может найти метод <init>()
BlazkowiczNecroArtО господи, большое спасибо - сделал статик, ошибка уже другая... Но это я уже как-то решал. Большое спасибо, бился уйму времени. Заодно постараюсь осознать, почему он не может быть создан вне экземпляра внешнего класса.
Не статические член класса - поле или метод, можно вызвать только у объекта. Не статический класс, точно так же привязан только к объекту.
http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Ага, всё дело в незнании джавы ) Ещё раз спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ebean, java, не может найти метод <init>() / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]