zoukankan      html  css  js  c++  java
  • JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-007Inheritance of embeddable classes(@MappedSuperclass、@Embeddable、@AttributeOverrides、、)

    一、结构

    二、代码

    1.

     1 package org.jpwh.model.inheritance.embeddable;
     2 
     3 import javax.persistence.MappedSuperclass;
     4 import javax.validation.constraints.NotNull;
     5 
     6 @MappedSuperclass
     7 public abstract class Measurement {
     8 
     9     @NotNull
    10     protected String name;
    11 
    12     @NotNull
    13     protected String symbol;
    14 
    15     // ...
    16     protected Measurement() {
    17     }
    18 
    19     public Measurement(String name, String symbol) {
    20         this.name = name;
    21         this.symbol = symbol;
    22     }
    23 
    24     public String getName() {
    25         return name;
    26     }
    27 
    28     public String getSymbol() {
    29         return symbol;
    30     }
    31 
    32     public void setName(String name) {
    33         this.name = name;
    34     }
    35 
    36     public void setSymbol(String symbol) {
    37         this.symbol = symbol;
    38     }
    39 }

    2.

     1 package org.jpwh.model.inheritance.embeddable;
     2 
     3 import javax.persistence.AttributeOverride;
     4 import javax.persistence.AttributeOverrides;
     5 import javax.persistence.Column;
     6 import javax.persistence.Embeddable;
     7 import javax.validation.constraints.NotNull;
     8 import java.math.BigDecimal;
     9 
    10 @Embeddable
    11 @AttributeOverrides({
    12         @AttributeOverride(name = "name",
    13                 column = @Column(name = "DIMENSIONS_NAME")),
    14         @AttributeOverride(name = "symbol",
    15                 column = @Column(name = "DIMENSIONS_SYMBOL"))
    16 })
    17 public class Dimensions extends Measurement {
    18 
    19     public static Dimensions centimeters(BigDecimal width, BigDecimal height, BigDecimal depth) {
    20         return new Dimensions("centimeters", "cm", width, height, depth);
    21     }
    22 
    23     public static Dimensions inches(BigDecimal width, BigDecimal height, BigDecimal depth) {
    24         return new Dimensions("inches", """, width, height, depth);
    25     }
    26 
    27     @NotNull
    28     protected BigDecimal depth;
    29 
    30     @NotNull
    31     protected BigDecimal height;
    32 
    33     @NotNull
    34     protected BigDecimal width;
    35 
    36     // ...
    37     public Dimensions() {
    38     }
    39 
    40     public Dimensions(String name, String symbol, BigDecimal width, BigDecimal height, BigDecimal depth) {
    41         super(name, symbol);
    42         this.height = height;
    43         this.width = width;
    44         this.depth = depth;
    45     }
    46 
    47     public BigDecimal getDepth() {
    48         return depth;
    49     }
    50 
    51     public BigDecimal getHeight() {
    52         return height;
    53     }
    54 
    55     public BigDecimal getWidth() {
    56         return width;
    57     }
    58 
    59     public void setDepth(BigDecimal depth) {
    60         this.depth = depth;
    61     }
    62 
    63     public void setHeight(BigDecimal height) {
    64         this.height = height;
    65     }
    66 
    67     public void setWidth(BigDecimal width) {
    68         this.width = width;
    69     }
    70 
    71     public String toString() {
    72         return String.format("W:%s%s x H:%s%s x D:%s%s", this.height, this.symbol, this.width, this.symbol, this.depth, this.symbol);
    73     }
    74 }

    3.

     1 package org.jpwh.model.inheritance.embeddable;
     2 
     3 import javax.persistence.AttributeOverride;
     4 import javax.persistence.AttributeOverrides;
     5 import javax.persistence.Column;
     6 import javax.persistence.Embeddable;
     7 import javax.validation.constraints.NotNull;
     8 import java.math.BigDecimal;
     9 
    10 @Embeddable
    11 @AttributeOverrides({
    12         @AttributeOverride(name = "name",
    13                 column = @Column(name = "WEIGHT_NAME")),
    14         @AttributeOverride(name = "symbol",
    15                 column = @Column(name = "WEIGHT_SYMBOL"))
    16 })
    17 public class Weight extends Measurement {
    18 
    19     public static Weight kilograms(BigDecimal weight) {
    20         return new Weight("kilograms", "kg", weight);
    21     }
    22 
    23     public static Weight pounds(BigDecimal weight) {
    24         return new Weight("pounds", "lbs", weight);
    25     }
    26 
    27     @NotNull
    28     @Column(name = "WEIGHT")
    29     protected BigDecimal value;
    30 
    31     // ...
    32     public Weight() {
    33     }
    34 
    35     public Weight(String name, String symbol, BigDecimal weight) {
    36         super(name, symbol);
    37         this.value = weight;
    38     }
    39 
    40     public BigDecimal getValue() {
    41         return value;
    42     }
    43 
    44     public void setValue(BigDecimal value) {
    45         this.value = value;
    46     }
    47 
    48     public String toString() {
    49         return String.format("%s%s", this.value, this.symbol);
    50     }
    51 }

    4.

     1 package org.jpwh.model.inheritance.embeddable;
     2 
     3 import org.jpwh.model.Constants;
     4 
     5 import javax.persistence.Entity;
     6 import javax.persistence.GeneratedValue;
     7 import javax.persistence.Id;
     8 import javax.validation.constraints.NotNull;
     9 import javax.validation.constraints.Size;
    10 
    11 @Entity
    12 public class Item {
    13 
    14 
    15     @Id
    16     @GeneratedValue(generator = Constants.ID_GENERATOR)
    17     protected Long id;
    18 
    19     @NotNull
    20     @Size(
    21             min = 2,
    22             max = 255,
    23             message = "Name is required, maximum 255 characters."
    24     )
    25 
    26     protected String name;
    27 
    28     protected Dimensions dimensions;
    29 
    30     protected Weight weight;
    31 
    32     // ...
    33 
    34     public Item() {
    35     }
    36 
    37     public Item(String name, Dimensions dimensions, Weight weight) {
    38         this.name = name;
    39         this.dimensions = dimensions;
    40         this.weight = weight;
    41     }
    42 
    43     public Dimensions getDimensions() {
    44         return dimensions;
    45     }
    46 
    47     public Long getId() { // Optional but useful
    48         return id;
    49     }
    50 
    51     public String getName() {
    52         return name;
    53     }
    54 
    55     public Weight getWeight() {
    56         return weight;
    57     }
    58 
    59     public void setDimensions(Dimensions dimensions) {
    60         this.dimensions = dimensions;
    61     }
    62 
    63     public void setName(String name) {
    64         this.name = name;
    65     }
    66 
    67     public void setWeight(Weight weight) {
    68         this.weight = weight;
    69     }
    70 
    71 }

    5.

  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/shamgod/p/5367987.html
Copyright © 2011-2022 走看看