@NoRepositoryBean
//@Repository
public interface StudentInCourseRepository
// extends JpaRepository<StudentInCourse, Long>
extends CrudRepository<StudentInCourse, Long>
{
List<StudentInCourse> findByCourse(Course course);
}
только по @NoRepo проходит компиляция... последствия пока не знаю.
@Getter
@Setter
@EqualsAndHashCode()
@ToString()
@NoArgsConstructor
@Table(name = "student")
@Entity
public class StudentImpl extends Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "student_id")
private Long id;
private String typeLearn;
@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "name")
@Table(name = "courses")
public class Course implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Getter
@Setter
@EqualsAndHashCode
@ToString
@NoArgsConstructor
@Builder
@Table(name = "student")
@Entity
public class Student implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "student_id")
private Long id;
private String typeLearn;
промежуточный класс - нужен доступ. таблица создается, но при дальнейшей компиляции при активации репозитория -
This class [class com.example.demo.model.learn.StudentInCourse] does not define an IdClass
@Getter
@Setter
@Entity
@NoArgsConstructor
@EqualsAndHashCode
@Table(name = "students_courses")
public class StudentInCourse implements Serializable {
public StudentInCourse(StudentImpl student, Course course) {
this.student = student;
this.course = course;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "fk_id")
private Long id;
// @EmbeddedId
// private StudentIdentity studentIdentity;
private Integer score = 0;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "student_id")
private StudentImpl student;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "course_id")
private Course course;
//пробовал разное,
@EmbeddedId
private StudentIdentity studentIdentity;
//на отдельный класс.
может надо вот это? Третья стратегия, GenerationType.TABLE, не зависит от поддержки конкретной базой данных и хранит счётчики значений в отдельной таблице. С одной стороны это более гибкое и настраиваемое решение, с другой стороны более медленное и требующее большей настройки. Вначале требуется создать (вручную!) и проинициализировать (!) таблицу для значений ключей:
от 1 до 12 (вот это я не понял)
CREATE TABLE JOURNAL
(
ID BIGINT PRIMARY KEY
);
CREATE TABLE SEQ_STORE
(
SEQ_NAME VARCHAR(255) PRIMARY KEY,
SEQ_VALUE BIGINT NOT NULL
);
INSERT INTO SEQ_STORE VALUES ('JOURNAL.ID.PK', 0);
Затем создать генератор и связать его со идентификатором:
@Id
@TableGenerator( name = "seqStore", table = "SEQ_STORE", pkColumnName = "SEQ_NAME", pkColumnValue = "JOURNAL.ID.PK", valueColumnName = "SEQ_VALUE", initialValue = 1, allocationSize = 1 )
@GeneratedValue( strategy = GenerationType.TABLE, generator = "seqStore" )
@Getter
@Setter
@Column(name = "id", nullable = false, updatable = false)
private Long rowId;
@TableGenerator принимает кучу аргументов:
name — имя этого конкретного генератора table — имя таблицы, в которой он хранит текущие значения ключей pkColumnName — имя столбца, в котором хранятся имена значений ключей pkColumnValue — имя ключа, используемого в этом генераторе valueColumnName — имя столбца, в котором хранятся значения ключей
или нет? самый нижний способ отсюда: https://easyjava.ru/data/jpa/pervichnye-klyuchi-v-jpa/ тоже не помог - но ошибка изменилась - меня послали в
public class StudentInCourse implements Serializable {
public StudentInCourse(StudentImpl student, Course course) {
this.student = student;
this.course = course;
}
@EmbeddedId
@JoinColumn(name = "sc_id")
private CourseIdentity courseIdentity;
public class CourseIdentity implements Serializable {
static final long serialVersionUID = 1L;
@NotNull
@Size(max = 20)
private String studentFirstName;
@NotNull
@Size(max = 20)
private String studentLastName;
Property of @IdClass not found in entity com.example.demo.model.learn.StudentInCourse: studentFirstName
org.hibernate.AnnotationException: Property of @IdClass not found in entity com.example.demo.model.learn.StudentInCourse: studentFirstName
мне обязательно надо в последствии работать с одним полем промежуточной таблицы , чтобы полю не участвующему в связи манитумани засетать инт. который по умолчанию равен 0. есть идеи? способы? или просто через сессию в спринге квайри на таблицу фильтр по курсу - хватать студентов. и каждому полю где студент - ставить оценку.... p.s. а таблица то и поля создаются, в идее вижу, трогаю(
CREATE TABLE students_courses
(
courseId
varchar(255) NOT NULL,
studentId
varchar(255) NOT NULL,
create_date
datetime DEFAULT NULL,
score
int(11) DEFAULT NULL,
student_id
bigint(20) NOT NULL,
course_id
bigint(20) NOT NULL,
id
bigint(20) NOT NULL,
fk_id
bigint(20) NOT NULL,
PRIMARY KEY (courseId
,studentId
,student_id
,course_id
),
KEY FKjgn1a7o3aubvog47ij9cjvgha
(student_id
),
KEY FKcc42107lsifo5rjyjlhdu6i6u
(course_id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
мне нужен будет доступ к полю score. и вообще доставать лист , тоесть DAO класс
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Такой вопрос, как реализовать уведомления когда приложение открыто только звуковое уведомление, а когда приложение скрыто (кнопкой Home), то push уведомление
Почему при такой записи компилятор не ругается: