简体   繁体   English

休眠@OneToOne不映射

[英]Hibernate @OneToOne Not Mapping

Error : 错误

org.hibernate.AnnotationException: Unknown mappedBy in: com.catalyst.User.Model.Person.User, referenced property unknown: com.catalyst.User.Model.User.User_ID org.hibernate.AnnotationException:未知映射方式:com.catalyst.User.Model.Person.User,引用属性未知:com.catalyst.User.Model.User.User_ID

I'm trying to create a OneToOne relationship without success. 我正在尝试创建一个OneToOne关系,但没有成功。 What am I doing wrong? 我究竟做错了什么?

User.java User.java

package com.catalyst.User.Model;

import javax.persistence.CascadeType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

@Entity(name = "User" )
@Table(name = "dbo.Users")
public class User
{
    @Id
    @Column(name="ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int ID;

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

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

    @Column(name="Active")
    private int Active;

    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
    private Person hPerson;

    public User()
    {
        // Hibernate Needs This
    }

    public User(String argUsername, String argPassword, int argActive)
    {
        this.Username   = argUsername;
        this.Password   = argPassword;
        this.Active     = argActive;
    }

    public Person getPerson()
    {
        return(hPerson);
    }

    public String getUsername()
    {
        return(Username);
    }

    public String getPassword()
    {
        return(Password);
    }

    public int getActive()
    {
        return(Active);
    }

    public void setUsername(String argUsername)
    {
        this.Username   = argUsername;
    }

    public void setPassword(String argPassword)
    {
        this.Password   = argPassword;
    }

    public void setActive(int argActive)
    {
        this.Active     = argActive;
    }

}

Person.java 人.java

package com.catalyst.User.Model;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

/*
    Person Model
*/

@Entity(name = "Person" )
@Table(name = "dbo.Person")
public class Person
{
    @Id
    @GeneratedValue(generator = "foreigngen")
    @GenericGenerator(strategy = "foreign", name="foreigngen",parameters = @Parameter(name = "property", value="user"))
    @Column(name = "ID")
    private int ID;

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

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

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

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

    @OneToOne(mappedBy = "user")
    private User User;

    @Column(name="Role_Id")
    private int RoleID;

    public Person()
    {
        // Hibernate Needs This
    }

    public Person(String argFName, String argLName, String argAddress, String argEmail, int argRoleID)
    {
        this.Firstname      = argFName;
        this.Lastname       = argLName;
        this.Address        = argAddress;
        this.Email          = argEmail;
        this.RoleID         = argRoleID;
    }

    public int getID()
    {
        return(ID);
    }

    public String getFirstname()
    {
        return(Firstname);
    }

    public String getLastname()
    {
        return(Lastname);
    }

    public String getFullname()
    {
        return(Firstname + " " + Lastname);
    }

    public String getAddress()
    {
        return(Address);
    }

    public String getEmail()
    {
        return(Email);
    }

    public User getUser()
    {
        return(User);
    }

    public int getRoleID()
    {
        return(RoleID);
    }

    public void setID(int arg)
    {
        this.ID = arg;
    }

    public void setFirstname(String arg)
    {
        this.Firstname = arg;
    }

    public void setLastname(String arg)
    {
        this.Lastname = arg;
    }

    public void setAddress(String arg)
    {
        this.Address = arg;
    }

    public void setEmail(String arg)
    {
        this.Email = arg;
    }

    public void setUserID(User arg)
    {
        this.User = arg;
    }

    public void setRoleID(int arg)
    {
        this.RoleID = arg;
    }
}

在此处输入图片说明

Database Dump 数据库转储

USE [master]
GO
/****** Object:  Database [APP]    Script Date: 6/23/2015 1:56:37 PM ******/
CREATE DATABASE [APP]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'APP', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\APP.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'APP_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\APP_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [APP] SET COMPATIBILITY_LEVEL = 110
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [APP].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [APP] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [APP] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [APP] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [APP] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [APP] SET ARITHABORT OFF 
GO
ALTER DATABASE [APP] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [APP] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [APP] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [APP] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [APP] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [APP] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [APP] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [APP] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [APP] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [APP] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [APP] SET  DISABLE_BROKER 
GO
ALTER DATABASE [APP] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [APP] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [APP] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [APP] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [APP] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [APP] SET READ_COMMITTED_SNAPSHOT OFF 
GO
ALTER DATABASE [APP] SET HONOR_BROKER_PRIORITY OFF 
GO
ALTER DATABASE [APP] SET RECOVERY FULL 
GO
ALTER DATABASE [APP] SET  MULTI_USER 
GO
ALTER DATABASE [APP] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [APP] SET DB_CHAINING OFF 
GO
ALTER DATABASE [APP] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
GO
ALTER DATABASE [APP] SET TARGET_RECOVERY_TIME = 0 SECONDS 
GO
USE [APP]
GO
/****** Object:  Table [dbo].[AssociatedProcedure]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[AssociatedProcedure](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Type] [varchar](50) NOT NULL,
    [Devices_ID] [int] NULL,
    [MicSupply_ID] [int] NOT NULL,
    [Drugs_ID] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_AssociatedProcedure] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Devices]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Devices](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DevicesType] [varchar](50) NOT NULL,
    [Cost] [decimal](18, 0) NOT NULL,
    [DeviceAge] [int] NOT NULL,
    [Active] [bit] NOT NULL,
    [Max Age] [int] NOT NULL,
 CONSTRAINT [PK_Devices] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Drugs]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Drugs](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DrugType] [varchar](50) NOT NULL,
    [DrugCost] [decimal](18, 0) NOT NULL,
    [Amount] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_Drugs] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[HIstory]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[HIstory](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Schedule_ID] [int] NULL,
    [Active] [bit] NULL,
    [Pet_ID] [int] NULL,
    [Actice] [bit] NULL,
 CONSTRAINT [PK_HIstory] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[MicSupply]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MicSupply](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [SupplyType] [varchar](50) NOT NULL,
    [Count] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_MicSupply] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Person]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Person](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [FName] [varchar](50) NOT NULL,
    [LName] [varchar](50) NOT NULL,
    [Address] [varchar](50) NOT NULL,
    [Email] [varchar](50) NOT NULL,
    [User_ID] [int] NOT NULL,
    [Role_Id] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_Person_1] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Pet]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Pet](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Prerson_ID] [int] NULL,
    [Name] [varchar](50) NULL,
    [Weight] [nchar](10) NULL,
    [Age] [bigint] NULL,
    [PetType] [varchar](50) NULL,
    [Active] [bit] NULL,
 CONSTRAINT [PK_Pet] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Procedure]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Procedure](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [AssociatedProcedure_ID] [int] NULL,
    [Cost] [decimal](18, 0) NOT NULL,
    [Devices_ID] [int] NOT NULL,
    [Drugs_ID] [int] NOT NULL,
    [MicSupply_ID] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_Procedure] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[Role]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Role](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Role] [varchar](50) NOT NULL,
    [Active] [bit] NULL,
 CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Schedule]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Schedule](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Date] [datetime] NULL,
    [Procedure_ID] [int] NULL,
    [Pet_ID] [int] NULL,
    [Vet_ID] [int] NULL,
    [Devices_ID] [int] NULL,
    [Cost] [decimal](18, 0) NULL,
    [Services_ID] [int] NULL,
    [Active] [bit] NULL,
    [History_ID] [int] NULL,
 CONSTRAINT [PK_Schedule] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[Services]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Services](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Type] [varchar](50) NOT NULL,
    [Cost] [decimal](18, 0) NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_Services] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[User]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[User](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Username] [varchar](50) NOT NULL,
    [Password] [varchar](50) NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Vets]    Script Date: 6/23/2015 1:56:37 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Vets](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Role_ID] [int] NOT NULL,
    [Active] [bit] NOT NULL,
 CONSTRAINT [PK_Vets] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[AssociatedProcedure] ON 

INSERT [dbo].[AssociatedProcedure] ([ID], [Type], [Devices_ID], [MicSupply_ID], [Drugs_ID], [Active]) VALUES (14, N'Wrap', 2, 3, 2, 1)
INSERT [dbo].[AssociatedProcedure] ([ID], [Type], [Devices_ID], [MicSupply_ID], [Drugs_ID], [Active]) VALUES (15, N'stich', NULL, 3, 4, 1)
SET IDENTITY_INSERT [dbo].[AssociatedProcedure] OFF
SET IDENTITY_INSERT [dbo].[Devices] ON 

INSERT [dbo].[Devices] ([ID], [DevicesType], [Cost], [DeviceAge], [Active], [Max Age]) VALUES (1, N'Xray', CAST(100 AS Decimal(18, 0)), 3, 1, 101)
INSERT [dbo].[Devices] ([ID], [DevicesType], [Cost], [DeviceAge], [Active], [Max Age]) VALUES (2, N'Table', CAST(50 AS Decimal(18, 0)), 1, 1, 122)
INSERT [dbo].[Devices] ([ID], [DevicesType], [Cost], [DeviceAge], [Active], [Max Age]) VALUES (3, N'Light', CAST(25 AS Decimal(18, 0)), 5, 1, 133)
SET IDENTITY_INSERT [dbo].[Devices] OFF
SET IDENTITY_INSERT [dbo].[Drugs] ON 

INSERT [dbo].[Drugs] ([ID], [DrugType], [DrugCost], [Amount], [Active]) VALUES (1, N'Epoch', CAST(4 AS Decimal(18, 0)), 200, 1)
INSERT [dbo].[Drugs] ([ID], [DrugType], [DrugCost], [Amount], [Active]) VALUES (2, N'dg health hemorrhoidal', CAST(3 AS Decimal(18, 0)), 300, 1)
INSERT [dbo].[Drugs] ([ID], [DrugType], [DrugCost], [Amount], [Active]) VALUES (3, N'Sertraline Hydrochloride', CAST(4 AS Decimal(18, 0)), 100, 1)
INSERT [dbo].[Drugs] ([ID], [DrugType], [DrugCost], [Amount], [Active]) VALUES (4, N'ibuprofen', CAST(2 AS Decimal(18, 0)), 200, 1)
INSERT [dbo].[Drugs] ([ID], [DrugType], [DrugCost], [Amount], [Active]) VALUES (5, N'Hydromorphone HCl', CAST(5 AS Decimal(18, 0)), 500, 1)
SET IDENTITY_INSERT [dbo].[Drugs] OFF
SET IDENTITY_INSERT [dbo].[HIstory] ON 

INSERT [dbo].[HIstory] ([ID], [Schedule_ID], [Active], [Pet_ID], [Actice]) VALUES (4, 4, 1, 4, 1)
INSERT [dbo].[HIstory] ([ID], [Schedule_ID], [Active], [Pet_ID], [Actice]) VALUES (6, 5, 1, 3, 1)
SET IDENTITY_INSERT [dbo].[HIstory] OFF
SET IDENTITY_INSERT [dbo].[MicSupply] ON 

INSERT [dbo].[MicSupply] ([ID], [SupplyType], [Count], [Active]) VALUES (1, N'tape', 6, 1)
INSERT [dbo].[MicSupply] ([ID], [SupplyType], [Count], [Active]) VALUES (2, N'glue', 7, 1)
INSERT [dbo].[MicSupply] ([ID], [SupplyType], [Count], [Active]) VALUES (3, N'glove', 3, 1)
INSERT [dbo].[MicSupply] ([ID], [SupplyType], [Count], [Active]) VALUES (4, N'broom', 2, 1)
INSERT [dbo].[MicSupply] ([ID], [SupplyType], [Count], [Active]) VALUES (5, N'bleach', 8, 1)
SET IDENTITY_INSERT [dbo].[MicSupply] OFF
SET IDENTITY_INSERT [dbo].[Person] ON 

INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (4, N'Timothy', N'Stewart', N'476 Kedzie Drive', N'tstewart0@soup.io', 1, 3, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (6, N'David', N'Hath', N'92990 Sutherland Crossing', N'hbryant9@europa.eu', 2, 1, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (7, N'Nick', N'Tacey', N'242 Oakridge Street', N'achavez1@g.co', 3, 1, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (8, N'Nick', N'Duncan', N'853 Mariners Cove Trail', N'ariley8@forbes.com', 4, 1, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (10, N'James', N'Blair', N'1234', N'happy', 5, 1, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (12, N'Anne', N'Chavez', N'242 Oakridge Street', N'achavez1@g.co', 6, 2, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (16, N'Christine', N'Carroll', N'4 Hintze Center', N'ccarroll2@wikipedia.org', 7, 5, 1)
INSERT [dbo].[Person] ([ID], [FName], [LName], [Address], [Email], [User_ID], [Role_Id], [Active]) VALUES (17, N'Jonathan', N'George', N'07067 Pawling Lane', N'jgeorge3@fda.gov', 8, 4, 1)
SET IDENTITY_INSERT [dbo].[Person] OFF
SET IDENTITY_INSERT [dbo].[Pet] ON 

INSERT [dbo].[Pet] ([ID], [Prerson_ID], [Name], [Weight], [Age], [PetType], [Active]) VALUES (2, 6, N'Peter', N'3         ', 4, N'dog', 1)
INSERT [dbo].[Pet] ([ID], [Prerson_ID], [Name], [Weight], [Age], [PetType], [Active]) VALUES (3, 9, N'Phyllis', N'2         ', 7, N'cat', 1)
INSERT [dbo].[Pet] ([ID], [Prerson_ID], [Name], [Weight], [Age], [PetType], [Active]) VALUES (4, 9, N'Heather', N'4         ', 21, N'dog', 1)
INSERT [dbo].[Pet] ([ID], [Prerson_ID], [Name], [Weight], [Age], [PetType], [Active]) VALUES (5, 10, N'Patricia', N'14        ', 1, N'cat', 1)
SET IDENTITY_INSERT [dbo].[Pet] OFF
SET IDENTITY_INSERT [dbo].[Procedure] ON 

INSERT [dbo].[Procedure] ([ID], [AssociatedProcedure_ID], [Cost], [Devices_ID], [Drugs_ID], [MicSupply_ID], [Active]) VALUES (1, NULL, CAST(400 AS Decimal(18, 0)), 2, 2, 1, 1)
INSERT [dbo].[Procedure] ([ID], [AssociatedProcedure_ID], [Cost], [Devices_ID], [Drugs_ID], [MicSupply_ID], [Active]) VALUES (2, 14, CAST(600 AS Decimal(18, 0)), 3, 4, 1, 1)
INSERT [dbo].[Procedure] ([ID], [AssociatedProcedure_ID], [Cost], [Devices_ID], [Drugs_ID], [MicSupply_ID], [Active]) VALUES (4, NULL, CAST(300 AS Decimal(18, 0)), 1, 5, 2, 1)
SET IDENTITY_INSERT [dbo].[Procedure] OFF
SET IDENTITY_INSERT [dbo].[Role] ON 

INSERT [dbo].[Role] ([ID], [Role], [Active]) VALUES (1, N'Admin', 1)
INSERT [dbo].[Role] ([ID], [Role], [Active]) VALUES (2, N'Vet', 1)
INSERT [dbo].[Role] ([ID], [Role], [Active]) VALUES (3, N'Vet Tec', 1)
INSERT [dbo].[Role] ([ID], [Role], [Active]) VALUES (4, N'Divice Tec', 1)
INSERT [dbo].[Role] ([ID], [Role], [Active]) VALUES (5, N'Employe', 1)
SET IDENTITY_INSERT [dbo].[Role] OFF
SET IDENTITY_INSERT [dbo].[Schedule] ON 

INSERT [dbo].[Schedule] ([ID], [Date], [Procedure_ID], [Pet_ID], [Vet_ID], [Devices_ID], [Cost], [Services_ID], [Active], [History_ID]) VALUES (4, NULL, 1, 2, 1, 2, CAST(300 AS Decimal(18, 0)), 1, 1, 1)
INSERT [dbo].[Schedule] ([ID], [Date], [Procedure_ID], [Pet_ID], [Vet_ID], [Devices_ID], [Cost], [Services_ID], [Active], [History_ID]) VALUES (5, NULL, 2, 2, 2, 2, CAST(200 AS Decimal(18, 0)), 1, 1, 1)
SET IDENTITY_INSERT [dbo].[Schedule] OFF
SET IDENTITY_INSERT [dbo].[Services] ON 

INSERT [dbo].[Services] ([ID], [Type], [Cost], [Active]) VALUES (1, N'Bath', CAST(50 AS Decimal(18, 0)), 1)
INSERT [dbo].[Services] ([ID], [Type], [Cost], [Active]) VALUES (2, N'Hair Cut', CAST(25 AS Decimal(18, 0)), 1)
INSERT [dbo].[Services] ([ID], [Type], [Cost], [Active]) VALUES (3, N'Brush Teeth', CAST(15 AS Decimal(18, 0)), 1)
SET IDENTITY_INSERT [dbo].[Services] OFF
SET IDENTITY_INSERT [dbo].[User] ON 

INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (1, N'frank', N'happy', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (2, N'dah', N'Teamprj', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (3, N'nTacey', N'passy', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (4, N'nDuncan', N'root', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (5, N'happy', N'happy', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (6, N'frank', N'tank', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (7, N'sally', N'sue', 1)
INSERT [dbo].[User] ([ID], [Username], [Password], [Active]) VALUES (8, N'jon', N'jon', 1)
SET IDENTITY_INSERT [dbo].[User] OFF
SET IDENTITY_INSERT [dbo].[Vets] ON 

INSERT [dbo].[Vets] ([ID], [Role_ID], [Active]) VALUES (1, 1, 1)
INSERT [dbo].[Vets] ([ID], [Role_ID], [Active]) VALUES (2, 3, 1)
INSERT [dbo].[Vets] ([ID], [Role_ID], [Active]) VALUES (3, 2, 1)
INSERT [dbo].[Vets] ([ID], [Role_ID], [Active]) VALUES (4, 1, 1)
SET IDENTITY_INSERT [dbo].[Vets] OFF
ALTER TABLE [dbo].[AssociatedProcedure]  WITH CHECK ADD  CONSTRAINT [FK_AssociatedProcedure_Devices] FOREIGN KEY([MicSupply_ID])
REFERENCES [dbo].[MicSupply] ([ID])
GO
ALTER TABLE [dbo].[AssociatedProcedure] CHECK CONSTRAINT [FK_AssociatedProcedure_Devices]
GO
ALTER TABLE [dbo].[AssociatedProcedure]  WITH CHECK ADD  CONSTRAINT [FK_AssociatedProcedure_Drugs] FOREIGN KEY([Drugs_ID])
REFERENCES [dbo].[Drugs] ([ID])
GO
ALTER TABLE [dbo].[AssociatedProcedure] CHECK CONSTRAINT [FK_AssociatedProcedure_Drugs]
GO
ALTER TABLE [dbo].[AssociatedProcedure]  WITH CHECK ADD  CONSTRAINT [FK_AssociatedProcedure_MicSupply] FOREIGN KEY([MicSupply_ID])
REFERENCES [dbo].[MicSupply] ([ID])
GO
ALTER TABLE [dbo].[AssociatedProcedure] CHECK CONSTRAINT [FK_AssociatedProcedure_MicSupply]
GO
ALTER TABLE [dbo].[HIstory]  WITH CHECK ADD  CONSTRAINT [FK_HIstory_Pet] FOREIGN KEY([Pet_ID])
REFERENCES [dbo].[Pet] ([ID])
GO
ALTER TABLE [dbo].[HIstory] CHECK CONSTRAINT [FK_HIstory_Pet]
GO
ALTER TABLE [dbo].[HIstory]  WITH CHECK ADD  CONSTRAINT [FK_HIstory_Schedule] FOREIGN KEY([Schedule_ID])
REFERENCES [dbo].[Schedule] ([ID])
GO
ALTER TABLE [dbo].[HIstory] CHECK CONSTRAINT [FK_HIstory_Schedule]
GO
ALTER TABLE [dbo].[Person]  WITH CHECK ADD  CONSTRAINT [FK_Person_User] FOREIGN KEY([User_ID])
REFERENCES [dbo].[User] ([ID])
GO
ALTER TABLE [dbo].[Person] CHECK CONSTRAINT [FK_Person_User]
GO
ALTER TABLE [dbo].[Procedure]  WITH CHECK ADD  CONSTRAINT [FK_Procedure_Devices] FOREIGN KEY([Devices_ID])
REFERENCES [dbo].[Devices] ([ID])
GO
ALTER TABLE [dbo].[Procedure] CHECK CONSTRAINT [FK_Procedure_Devices]
GO
ALTER TABLE [dbo].[Procedure]  WITH CHECK ADD  CONSTRAINT [FK_Procedure_Drugs] FOREIGN KEY([Drugs_ID])
REFERENCES [dbo].[Drugs] ([ID])
GO
ALTER TABLE [dbo].[Procedure] CHECK CONSTRAINT [FK_Procedure_Drugs]
GO
ALTER TABLE [dbo].[Procedure]  WITH CHECK ADD  CONSTRAINT [FK_Procedure_MicSupply] FOREIGN KEY([MicSupply_ID])
REFERENCES [dbo].[MicSupply] ([ID])
GO
ALTER TABLE [dbo].[Procedure] CHECK CONSTRAINT [FK_Procedure_MicSupply]
GO
ALTER TABLE [dbo].[Schedule]  WITH CHECK ADD  CONSTRAINT [FK_Schedule_Devices] FOREIGN KEY([Devices_ID])
REFERENCES [dbo].[Devices] ([ID])
GO
ALTER TABLE [dbo].[Schedule] CHECK CONSTRAINT [FK_Schedule_Devices]
GO
ALTER TABLE [dbo].[Schedule]  WITH CHECK ADD  CONSTRAINT [FK_Schedule_Pet] FOREIGN KEY([Pet_ID])
REFERENCES [dbo].[Pet] ([ID])
GO
ALTER TABLE [dbo].[Schedule] CHECK CONSTRAINT [FK_Schedule_Pet]
GO
ALTER TABLE [dbo].[Schedule]  WITH CHECK ADD  CONSTRAINT [FK_Schedule_Procedure] FOREIGN KEY([Procedure_ID])
REFERENCES [dbo].[Procedure] ([ID])
GO
ALTER TABLE [dbo].[Schedule] CHECK CONSTRAINT [FK_Schedule_Procedure]
GO
ALTER TABLE [dbo].[Schedule]  WITH CHECK ADD  CONSTRAINT [FK_Schedule_Vets] FOREIGN KEY([Vet_ID])
REFERENCES [dbo].[Vets] ([ID])
GO
ALTER TABLE [dbo].[Schedule] CHECK CONSTRAINT [FK_Schedule_Vets]
GO
ALTER TABLE [dbo].[Vets]  WITH CHECK ADD  CONSTRAINT [FK_Vets_Role] FOREIGN KEY([Role_ID])
REFERENCES [dbo].[Role] ([ID])
GO
ALTER TABLE [dbo].[Vets] CHECK CONSTRAINT [FK_Vets_Role]
GO
USE [master]
GO
ALTER DATABASE [APP] SET  READ_WRITE 
GO

The mappedBy attribute in your @OneToOne in class Person, should point to class User's reference to Person which you've declared as "hPerson". 您在@OneToOne类中的Person中的mappingBy 属性应指向类User对您已声明为“ hPerson”的Person的引用。

public class Person
{
    ...
    @OneToOne(mappedBy = "user")
    private User User;

should be 应该

    ...
    @OneToOne(mappedBy = "hPerson")
    private User User;

As declared, you're saying that User owns the relationship with Person. 如所声明的,您是说用户拥有与Person的关系。

According to the JavaDocs for @OneToOne there are two use cases for having a one-to-one relationship between two normal (ie, not embedded or component) entity classes: 根据@OneToOneJavaDocs,在两个普通(即非嵌入式或组件)实体类之间具有一对一关系的使用案例有两种:

Case 1 : The two classes share the primary key. 情况1 :这两个类共享主键。 This is modeled as: 建模为:

@Entity
class User {
  @Id
  private Long id;

  @OneToOne
  private Person person;
}

@Entity
class Person {
  @Id
  private Long id;

  @OneToOne
  private User user;
}

Depending on the business rules of the domain and the class model, other optional information may be added, such as @OneToOne(optional = true) or @OneToOne @MapsId (see the JavaDocs for details). 根据域和类模型的业务规则,可能会添加其他可选信息,例如@OneToOne(optional = true)@OneToOne @MapsId (有关详细信息,请参阅JavaDocs)。 However, this basic model works. 但是,此基本模型有效。

Case 2 : The two classes have a logical one-to-one relationship through foreign keys. 情况2 :这两个类通过外键具有逻辑一对一的关系。 This is modeled as: 建模为:

@Entity
class User {
  @Id
  private Long id;

  @OneToOne
  @JoinColumn(name = "person_id")
  private Person person;
}

@Entity
class Person {
  @Id
  private Long id;

  @OneToOne(mappedBy = "person")
  @JoinColumn(name = "user_id")
  private User user;
}

In this case, the owned entity must declare how the owner entity refers to its instances by including the mappedBy attribute on @OneToOne . 在这种情况下, owned实体必须通过在@OneToOne上包含mappedBy属性来声明owner实体如何引用其实例。 In the example above, it is assumed that User is the owner of the relationship and Person is the owned entity (thereby requiring mappedBy on the Person side). 在上面的示例中,假设User是关系的所有者, Person是拥有的实体(因此要求在Person端使用mappedBy )。

Comparing the two examples, it can be seen that modeling the one-to-one relationship using a foreign key column requires the use of a @JoinColumn annotation on the side that has the foreign key. 比较两个示例,可以看出,使用外键列对一对一关系进行建模需要在具有外键的一侧使用@JoinColumn批注。


What you have is a hybrid of these two cases. 您所拥有的是这两种情况的混合体。 In your entity model, User does not have a foreign key column to Person but Person does have a foreign key column back to the User . 在你的实体模型, User没有一个外键列到Person ,但Person确实有一个外键列回User Therefore, the simplest model can be developed by using User definition from the first example above and Person definition from the second example: 因此,可以使用上面第一个示例中的User定义和第二个示例中的Person定义来开发最简单的模型:

@Entity
class User {
  @Id
  private Long id;

  @OneToOne
  private Person person;
}

@Entity
class Person {
  @Id
  private Long id;

  @OneToOne
  @JoinColumn(name = "user_id")
  private User user;
}

See classes User and Person in this sample app . 请参阅此示例应用程序中的 UserPerson类。 You can run the associated JUnit test cases or check the CI build status to ensure that the associations are working correctly. 您可以运行关联的JUnit测试用例或检查CI的构建状态,以确保关联正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM