Обычно я использую функцию мультикультуры для синтаксического анализа пользовательского ввода, в основном потому, что, если кто-то используется для numpad и использует культуру, которая использует запятую в качестве разделителя десятичных чисел, этот человек будет использовать точку numpad вместо запятая.
public static double GetDouble(string value, double defaultValue)
{
double result;
//Try parsing in the current culture
if (!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture, out result) &&
//Then try in US english
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out result) &&
//Then in neutral language
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out result))
{
result = defaultValue;
}
return result;
}
Остерегайтесь, однако, комментарии @nikie верны. Для моей защиты я использую эту функцию в контролируемой среде, где я знаю, что культура может быть en-US, en-CA или fr-CA. Я использую эту функцию, потому что на французском языке мы используем запятую как разделитель десятичной дроби, но любой, кто когда-либо работал в сфере финансов, всегда будет использовать десятичный разделитель на numpad, но это точка, а не запятая. Поэтому даже в культуре fr-CA мне нужно проанализировать число, которое будет иметь точку в качестве разделителя десятичных чисел.
Создайте новое имя класса как Quiz.class
@Entity
public class Quiz{
@Id
private int id;
private String quizName;
private String quizDescription;
private int passingScore;
private int totalScore;
// Getter and setters
}
Question.class будет выглядеть следующим образом
@Entity(name = "question")
public class Question extends DateAudit {
@Id
@Column(name = "question_id")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "question_seq")
@SequenceGenerator(name = "question_seq", allocationSize = 1)
private Long id;
@Column(name = "name")
@NotBlank(message = "Question name can not be blank")
private String name;
@Column(name = "is_exam_question", nullable = false)
private Boolean is_exam_question;
@OneToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE },mappedBy="question")
private Set<Answer> answers = new HashSet<>();
@ManyToOne
private Quiz quiz;
}
Tests.class будет выглядеть так
@Entity
public class Tests{
private int id;
@ManyToOne
private Quiz quiz;
@ManyToOne
private User user;
private int score;
private String status; // failed or passed
}
Я думаю, это поможет тебе. Не стесняйтесь задавать мне больше вопросов.