首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在讲师类上设置讲师car_id

无法在讲师类上设置讲师car_id
EN

Stack Overflow用户
提问于 2019-09-22 22:22:04
回答 1查看 37关注 0票数 0

我有几个实体,我可以用他的id,名字,姓氏,城市,地址来保存他,但我可以用胸腺从.On引导加载程序中设置他在car_id上的引用。

模板解析过程中出错(模板:"class path resource template /index.html“) org.thymeleaf.exceptions.TemplateInputException:模板解析过程中出错(模板:"class path resource template /index.html”),原因: org.attoparser.ParseException: Exception计算SpringEL表达式:"car.getInstructor().id“(模板:"index”-第84行,第13列)

在讲师课上,我这样做了

@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)私家车;在Car课上,我这样做了@OneToOne私人教师教师;

代码语言:javascript
复制
<body>
    <form th:object="${instructor}" th:action="@{/instructor/}" method="post">
        <input type="hidden" th:field="*{id}"/>
        First name<br>
        <input type="text" class="form-control" th:field="*{firstName}"/><br>
        Last name <br>
        <input type="text" class="form-control" th:field="*{lastName}"/><br>
        City <br>
        <input type="text" class="form-control" th:field="*{city}"/><br>
        Address <br>
        <input type="text" class="form-control" th:field="*{address}"/><br>

      <input type="number" class="form-control" th:field="*{car.id}"/><br>
        <button type="submit">Submit</button>
    </form>
</body> 

@Slf4j @控制器公共类IndexController {

代码语言:javascript
复制
    private final InstructorService instructorService;
    private final StudentService studentService;
    private final CarService carService;
    private final CarDrivingClassService carDrivingClassService;

    public IndexController(InstructorService instructorService, StudentService studentService, CarService carService, CarDrivingClassService carDrivingClassService) {
        this.instructorService = instructorService;
        this.studentService = studentService;
        this.carService = carService;
        this.carDrivingClassService = carDrivingClassService;
    }


    @RequestMapping({"", "/", "/index"})
    public String getIndexPage(Model model) {

        System.out.println("Getting Index page");
        model.addAttribute("cars",carService.findAll());
        model.addAttribute("instructors", instructorService.findAll());
        model.addAttribute("students", studentService.findAll());

        return "index";
    }

    @GetMapping("/new")
    public String newRecipe(Model model){
        model.addAttribute("instructor", new InstructorCommand());

        return "/form";
}
    @PostMapping("instructor")
    @Transactional
    public String saveOrUpdate(@ModelAttribute InstructorCommand command){

        InstructorCommand savedCommand = instructorService.saveInstructorCommand(command);

        return "redirect:/";
    }


}

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="cars")
public class Car extends BaseEntity{

    @Column(name = "name")
    private String name;

    @OneToOne
    private Instructor instructor;


}

@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name="instructors")
public class Instructor extends Person{

    @OneToMany(mappedBy = "instructor")
    public  Set<Student> students = new HashSet<>();

    @OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    private Car car;


} 
EN

回答 1

Stack Overflow用户

发布于 2019-09-22 23:38:18

我正在用这个加载数据

代码语言:javascript
复制
@Component
public class Bootstrap implements CommandLineRunner {

    private final CarService carService;
    private final StudentService studentService;
    private final InstructorService instructorService;
    private final CarDrivingClassService carDrivingClassService;

    public Bootstrap(CarService carService, StudentService studentService, InstructorService instructorService, CarDrivingClassService carDrivingClassService) {
        this.carService = carService;
        this.studentService = studentService;
        this.instructorService = instructorService;
        this.carDrivingClassService = carDrivingClassService;
    }

    @Override
    public void run(String... args) throws Exception {

        Date date = new SimpleDateFormat( "yyyyMMdd" ).parse( "19970807" );
        Date date2 = new SimpleDateFormat( "yyyyMMdd" ).parse( "20192304" );
        Date date3 = new SimpleDateFormat( "yyyyMMdd" ).parse( "20192404" );
        Date date4 = new SimpleDateFormat( "yyyyMMdd" ).parse( "20192505" );

        /*Creating a student*/
        Student student = new Student();
        student.setFirstName("Bob");
        student.setLastName("Rock");
        student.setBirthDate(date);
        student.setCity("Miami");
        student.setAddress("Lincoln Road");
        student.setPostalCode(45300);

        Student student2 = new Student();
        student2.setFirstName("John");
        student2.setLastName("Smith");
        student2.setBirthDate(date);
        student2.setCity("Miami");
        student2.setAddress("Old Cutler Road and Ingraham Highway");
        student2.setPostalCode(45100);

        /*Class that will save our classes for driving*/
        CarDrivingClass savedDrivingClasses;

        //Create 20 car driving classes and save them in table CLASSES
        for(int i = 0; i<20; i++){
            CarDrivingClass tempClass = new CarDrivingClass();
            tempClass.setDate(date3);
            savedDrivingClasses = carDrivingClassService.save(tempClass);
            /*
            Fill table STUDENT_CLASSES
            * */
            student.getClasses().add(savedDrivingClasses);
            student2.getClasses().add(savedDrivingClasses);
            System.out.println("Saving "+(i+1)+ ". class");
        }
        /*Instructor one*/
        Instructor instructor = new Instructor();
        instructor.setFirstName("Dave");
        instructor.setLastName("Joe");
        instructor.setCity("Miami");
        instructor.setAddress("Miami 001");
        instructor.setPostalCode(45400);

        /*Instructor two*/
        Instructor instructor2 = new Instructor();
        instructor2.setFirstName("Clark");
        instructor2.setLastName("Kent");
        instructor2.setCity("LA");
        instructor2.setAddress("South Martel Avenue");
        instructor2.setPostalCode(95400);

        /*Car num one*/
        Car audi = new Car();
        audi.setName("Audi A7");
        audi.setInstructor(instructor);

        /*Car num two*/
        Car BMW = new Car();
        BMW.setName("BMW M4");
        BMW.setInstructor(instructor2);

        /*Adding car to instructors*/
        instructor.setCar(audi);
        instructor2.setCar(BMW);

        /*Associate student with instructor*/
        student.setInstructor(instructor);
        student2.setInstructor(instructor);

        //Saving into db with services
        instructorService.save(instructor);
        instructorService.save(instructor2);
        studentService.save(student);
        studentService.save(student2);
        carService.save(audi);
        carService.save(BMW);

    }
} 

这样可以很好地显示数据

代码语言:javascript
复制
<h1>Instructors</h1>
<table>
    <thead>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Surname</th>
        <th>City</th>
        <th>Address</th>
        <th>Car</th>
    </tr>
    </thead>
    <tr th:remove="all">
        <td>123</td>
        <td>Tasty Goodnees 1</td>
        <td><a href="#">View</a></td>
    </tr>
    <tr th:each="instructor : ${instructors}">
        <td th:text="${instructor.id}">334</td>
        <td th:text="${instructor.firstName}">Tasty Goodnees 3</td>
        <td th:text="${instructor.lastName}">Tasty Goodnees 3</td>
        <td th:text="${instructor.city}">Tasty Goodnees 3</td>
        <td th:text="${instructor.address}">Tasty Goodnees 3</td>
        <td th:text="${instructor.getCar().id}">Tasty Goodnees 3</td> <!--getting car id -->
    </tr>
</table> 

但是,当我添加一个新的讲师时,它在索引表单中显示了${instructor.getCar().id的错误,我可以在表单中添加没有id输入字段的讲师,并在index.html Tasty 3中添加这行代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58050100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档