powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ebean, java, не может найти метод <init>()
12 сообщений из 12, страница 1 из 1
Ebean, java, не может найти метод <init>()
    #38155728
NecroArt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Использую 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
Ebean, java, не может найти метод <init>()
    #38155796
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шо за Ebean? Может он внутренние классы не умеет?
...
Рейтинг: 0 / 0
Ebean, java, не может найти метод <init>()
    #38155833
NecroArt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

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

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

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

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

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


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